Написал библиотеку. При компиляции скетча выдает ошибку.
- Войдите на сайт для отправки комментариев
Пнд, 29/06/2015 - 01:27
Добрый ночи!
Очень хочу научиться писать библиотеки для себя. Мой первый опыт несколько неудачен. Помогите пожалуйста разобраться где я косячу (dot и dash исчитано вдоль и поперёк).
Голова
/**/
#ifndef osh_h
#define osh_h
//#include "WProgram.h"
#include "Arduino.h"
class osh
{
public:
osh(int motor_pin_1, int motor_pin_2, int motor_pin_3, int motor_pin_4, int a);
private:
int _d;
};
#endif
CPP
#include "Arduino.h"
#include "osh.h"
osh::osh(int motor_pin_1, int motor_pin_2, int motor_pin_3, int motor_pin_4, int a)
{
pinMode(motor_pin_1,OUTPUT);
pinMode(motor_pin_2,OUTPUT);
pinMode(motor_pin_3,OUTPUT);
pinMode(motor_pin_4,OUTPUT);
}
void osh::shag()
{_d=0;
do{
digitalWrite(motor_pin_1, LOW);
digitalWrite(motor_pin_2, LOW);
digitalWrite(motor_pin_3, LOW);
digitalWrite(motor_pin_4, HIGH);
delay(a);
//
digitalWrite(motor_pin_1, LOW);
digitalWrite(motor_pin_2, LOW);
digitalWrite(motor_pin_3, HIGH);
digitalWrite(motor_pin_4, HIGH);
delay(a);
//
digitalWrite(motor_pin_1, LOW);
digitalWrite(motor_pin_2, LOW);
digitalWrite(motor_pin_3, HIGH);
digitalWrite(motor_pin_4, LOW);
delay(a);
//
digitalWrite(motor_pin_1, LOW);
digitalWrite(motor_pin_2, HIGH);
digitalWrite(motor_pin_3, LOW);
digitalWrite(motor_pin_4, LOW);
delay(a);
//
digitalWrite(motor_pin_1, HIGH);
digitalWrite(motor_pin_2, HIGH);
digitalWrite(motor_pin_3, LOW);
digitalWrite(motor_pin_4, LOW);
delay(a);
//
digitalWrite(motor_pin_1, HIGH);
digitalWrite(motor_pin_2, LOW);
digitalWrite(motor_pin_3, LOW);
digitalWrite(motor_pin_4, LOW);
delay(a);
//
digitalWrite(motor_pin_1, HIGH);
digitalWrite(motor_pin_2, LOW);
digitalWrite(motor_pin_3, LOW);
digitalWrite(motor_pin_4, HIGH);
delay(a);
_d=_d+1;
}
while (_d<512);
//
digitalWrite(motor_pin_1, LOW);
digitalWrite(motor_pin_2, LOW);
digitalWrite(motor_pin_3, LOW);
digitalWrite(motor_pin_4, LOW);
delay(500);
}
Скетч
#include <osh.h>
osh sh1(2,3,4,5,1);
osh sh2(6,7,8,9,1);
osh sh3(10,11,12,13,1);
void setup() {
}
void loop() {
sh1.shag();
sh2.shag();
sh3.shag();
}
Ошибки
shag_s_bibl.ino: In function 'void loop()':
shag_s_bibl:12: error: 'class osh' has no member named 'shag'
shag_s_bibl:13: error: 'class osh' has no member named 'shag'
'class osh' has no member named 'shag'
Голова уже болит...
Без нужды бы не обращался. Где-то в моём понимании библиотек - ошибка.
Так в хидере ("голове") вы не указали в классе прототип функции...
Потом будет ругаться на строки delay(a); в методе shag.
Имена, просто мечта бухгалтера, чернил жалко?
a, _d и т.п. Через месяц забудешь для чего они.
Обилие комментариев, опять же.
Член класса _d вообще не нужен, его правильней сделать локальной переменной.
Ну и отступы так же для экономии выпилены, очевидно. Ctrl-t, если лень отступы делать.
Есть ещё одна (как минимум) ошибка, но это домашнее задание автору.
Спасибо!
Спасибо!
Изменил.
А зачем?
/**/ #ifndef osh_h #define osh_h //#include "WProgram.h" #include "Arduino.h" class osh { public: osh(int motor_pin_1, int motor_pin_2, int motor_pin_3, int motor_pin_4, int a); void shag(); private: int _d; int _motor_pin_1; int _motor_pin_2; int _motor_pin_3; int _motor_pin_4; int _a; }; #endif#include "Arduino.h" #include "osh.h" osh::osh(int motor_pin_1, int motor_pin_2, int motor_pin_3, int motor_pin_4, int a) { pinMode(motor_pin_1,OUTPUT); pinMode(motor_pin_2,OUTPUT); pinMode(motor_pin_3,OUTPUT); pinMode(motor_pin_4,OUTPUT); _motor_pin_1=motor_pin_1; _motor_pin_2=motor_pin_2; _motor_pin_3=motor_pin_3; _motor_pin_4=motor_pin_4; _a=a; } void osh::shag() {_d=0; do{ digitalWrite(_motor_pin_1, LOW); digitalWrite(_motor_pin_2, LOW); digitalWrite(_motor_pin_3, LOW); digitalWrite(_motor_pin_4, HIGH); delay(_a); // digitalWrite(_motor_pin_1, LOW); digitalWrite(_motor_pin_2, LOW); digitalWrite(_motor_pin_3, HIGH); digitalWrite(_motor_pin_4, HIGH); delay(_a); // digitalWrite(_motor_pin_1, LOW); digitalWrite(_motor_pin_2, LOW); digitalWrite(_motor_pin_3, HIGH); digitalWrite(_motor_pin_4, LOW); delay(_a); // digitalWrite(_motor_pin_1, LOW); digitalWrite(_motor_pin_2, HIGH); digitalWrite(_motor_pin_3, LOW); digitalWrite(_motor_pin_4, LOW); delay(_a); // digitalWrite(_motor_pin_1, HIGH); digitalWrite(_motor_pin_2, HIGH); digitalWrite(_motor_pin_3, LOW); digitalWrite(_motor_pin_4, LOW); delay(_a); // digitalWrite(_motor_pin_1, HIGH); digitalWrite(_motor_pin_2, LOW); digitalWrite(_motor_pin_3, LOW); digitalWrite(_motor_pin_4, LOW); delay(_a); // digitalWrite(_motor_pin_1, HIGH); digitalWrite(_motor_pin_2, LOW); digitalWrite(_motor_pin_3, LOW); digitalWrite(_motor_pin_4, HIGH); delay(_a); _d=_d+1; } while (_d<512); // digitalWrite(_motor_pin_1, LOW); digitalWrite(_motor_pin_2, LOW); digitalWrite(_motor_pin_3, LOW); digitalWrite(_motor_pin_4, LOW); delay(500); }