Написал библиотеку. При компиляции скетча выдает ошибку.
- Войдите на сайт для отправки комментариев
Пнд, 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, если лень отступы делать.
Есть ещё одна (как минимум) ошибка, но это домашнее задание автору.
Спасибо!
Спасибо!
Изменил.
А зачем?