Библиотека. Или я глючЮ. Помощь.
- Войдите на сайт для отправки комментариев
Втр, 26/08/2014 - 20:49
Всем привет !
пытаюсь изучить создание библиотеки. Объект - светодиод. Создание объекта - два параметра, 1 - пин, 2 - подмигнуть или подугаснуть. Процедура - в зависимости от параметра 2 при создании объекта - включить СД или погасить его на указанное в процедуре время.
головной :
==================================================================
#ifndef RomaLCD_h
#define RomaLCD_h
#include "Arduino.h"
class RomaLCD
{
public:
RomaLCD( int LCDPin , int FrontTImpuls );
int LCDPin();
unsigned int TImpuls();
int FrontTImpuls();
void blinkLCD( unsigned int TImpuls );
private:
int _LCD_Pin;
unsigned int _TImpuls;
int _FrontTImpuls;
};
#endif
==================================================================
реализация :
==================================================================
#include "Arduino.h"
#include "RomaLCD.h"
RomaLCD::RomaLCD( int LCDPin , int FrontTImpuls )
{
_LCDPin = LCDPin;
_FrontTImpuls = FrontTImpuls;
pinMode( _LCDPin , OUTPUT );
digitalWrite( _LCDPin , ! _FrontTImpuls );
}
void RomaLCD::blinkLCD( unsigned int TImpuls )
{
unsigned int _TImpuls = TImpuls ;
digitalWrite( _LCDPin , _FrontTImpuls );
unsigned long TNow = millis( );
if ( ( millis( ) - TNow ) > _TImpuls )
{
digitalWrite( _LCDPin , ! _FrontTImpuls );
}
}
==================================================================
скетч :
==================================================================
#include <RomaLCD.h>
void setup( )
{
RomaLCD LCD_0( 8 , 1 );
}
void loop( )
{
LCD_0.blinkLCD( 500 );
}
==================================================================
ругательства скетча :
==================================================================
Roma_LCD_Lib.cpp: In function 'void loop()':
Roma_LCD_Lib:9: error: 'LCD_0' was not declared in this scope
==================================================================
где я накосячил - подскажите пожста....
Почитайте про область видимости объектов в C++...декларацию LCD_0 нужно вытащть их setup наружу...
дык, два варианта - сетап и луп.... видимость с дельфов знаю... прямо подскажите ? :)-
третий вариант - не сетап и не луп
тоже пробовал, но не озвучил....
на это ругается так :
_LCDPin и _LCD_Pin - это разные имена
ругается только на файлы библиотеки.... и там всё менял по разному :(
_LCDPin и _LCD_Pin - это разные имена
оооооой, щас проверю... спасибо !
а ИДЕ надо перезагружать после правки библы ?
и ещё - как сделать чёбы не было возврата в луп пока не закончится выполняться процедура объекта вызванная библой ? может не так спросил ? :(
СПАСИБО ! в либе убрал всего-то одно подчёркивание.... компилируется ! платы нетс собом, потом проверю....
про ИДЕ и правку библы - понял - не надо перезагружать...
а второй вопрос - остался.... подскАжите ?
как сделать чёбы не было возврата в луп пока не закончится выполняться процедура объекта вызванная библой ? может не так спросил ? :( ....как у серв... пока не выйдет на заданное положение - дальнейшие строки скетча не выполняются....
спасибо, toly ! буду ждать....
и ещё - как сделать чёбы не было возврата в луп пока не закончится выполняться процедура объекта вызванная библой ? может не так спросил ? :(
Так ничего и не надо делать, выполнение скетча дальше не продвинется, пока не выполнится текущий метод. Это ведь микроконтроллер, здесь нет многопоточности. Обычное линейное выполнение команд
не обобщайте.
всё заработало.... и при 0, и при 1 во втором параметре в строке 2
задежка от выхода из метода - строки 54, 55
всем спасибо :)