Ви не увійшли.
Вот еще подобная программа. Только без светодиодов.
// ---класс вспышка---
class qw_blink {
public:
qw_blink(int pin,unsigned long span);
void go();// драйвер blink
private:
unsigned long span;// интервал гашения или включения
unsigned long future;// время сменить состояние гашения или включения
int pin;// номер вывода
boolean state;// состояние светодиода
};
qw_blink::qw_blink(int pin,unsigned long span){
this->pin = pin;
pinMode(pin, OUTPUT);
this->span = span/2;
future = span+millis();
state = 0;
digitalWrite(pin, state);
}
void qw_blink::go(){
if (millis() < future) return;
future = span+millis();
state = ! state ;
digitalWrite(pin, state);
}
// ---- класс ослик -----
// отправляет сообщение в Serial через определеное время
class qw_neddy{
public:
qw_neddy(unsigned long span,char* message);
void go();// драйвер neddy
char* message;
private:
unsigned long span;// интервал сообщения
unsigned long future;// время следующего сообщения
};
qw_neddy::qw_neddy(unsigned long span,char* message){
this->message = message;
this->span = span;
future = span+millis();
}
void qw_neddy::go(){
if (millis() < future) return;
future = span+millis();
Serial.print(message);
Serial.println(millis());
}
// ---- класс корова -----
// построен на основе этого http://arduino.ua/ru/prog/Serial/Read
class qw_kine{
public:
qw_kine(unsigned long span);// конструктор
void go();// драйвер kine
private:
unsigned long span;// интервал сообщения
unsigned long future;// время следующего сообщения
int incomingByte;// входящий байт
};
qw_kine::qw_kine(unsigned long span){
this->span = span;
future = span+millis();
}
void qw_kine::go(){
if (millis() < future) return;
future = span+millis();
if (Serial.available() == 0) return; //если есть доступные данные
incomingByte = Serial.read();
Serial.print("I received: ");
Serial.println(incomingByte);
}
// ====== Программа ======
qw_blink VD1(13,1200); // светодиод нв 13 мигает 1.2 сек
qw_neddy neddy0(1000,"neddy0 ");// отпавка в Serial каждые 1 сек
qw_neddy neddy1(1300,"neddy1 ");// отпавка в Serial каждые 1,3 сек
qw_neddy neddy2(900,"neddy2 ");// отпавка в Serial каждые 0,9 сек
qw_kine kine(100);
void setup() {
Serial.begin(9600); //устанавливаем последовательное соединение
}
void loop() {
// подключение драйверов
VD1.go();
neddy0.go();neddy1.go();neddy2.go();
kine.go();
}
Похоже вы все таки не смогли прочитать программу.
1-черный, потому что я так и не смог поменять цвет в панеле кода.
2- объявление представителей классов все же до setup(), так как видимость нужна на всю программу.
3 - delay(xxx) там точно не надо. Мало что прерывание накроет, так и производительность съест.
4 - Это в некотором смысле ОС с независимыми потоками и необычной архитектурой, которую можно наращивать. Но модулями построеными по данной идеалогии. Вот только с привычными не работает.
И да в среде Ардуино прекрасно компилируется и работает. Сырую программу я предпочитаю не выкладывать.
ПС:
Вот вам пример из здешнего Тутора
#include <Morse.h>
Morse morse(13);
void setup()
{
}
void loop()
{
morse.dot(); morse.dot(); morse.dot();
morse.dash(); morse.dash(); morse.dash();
morse.dot(); morse.dot(); morse.dot();
delay(3000);
}
http://arduino.ua/ru/prog/LibraryTutorial
А теперь на Бис. Все тоже самое , а еще в Serial отправлять сообщение каждые 2 сек.
// ---класс вспышка---
class qw_blink {
public:
qw_blink(int pin,unsigned long span);
void go();// драйвер blink
private:
unsigned long span;// интервал гашения или включения
unsigned long future;// время сменить состояние гашения или включения
int pin;// номер вывода
boolean state;// состояние светодиода
};
qw_blink::qw_blink(int pin,unsigned long span){
this->pin = pin;
pinMode(pin, OUTPUT);
this->span = span;
future = span+millis();
state = 0;
digitalWrite(pin, state);
}
void qw_blink::go(){
if (millis() < future) return;
future = span+millis();
state = ! state ;
digitalWrite(pin, state);
}
// ---- класс ослик -----
// отправляет сообщение в Serial через определеное время
class qw_neddy{
public:
qw_neddy(unsigned long span);
void go();// драйвер blink
private:
unsigned long span;// интервал сообщения
unsigned long future;// время следующего сообщения
};
qw_neddy::qw_neddy(unsigned long span){
this->span = span;
future = span+millis();
}
void qw_neddy::go(){
if (millis() < future) return;
future = span+millis();
Serial.println("neddy");
}
// ====== Программа ======
qw_blink VD1(13,1200); // светодиод нв 13 мигает 1.2+1.2 сек
qw_blink VD2(12,1100); // светодиод нв 12 мигает 1.1+1.1 сек
qw_blink VD3(11,1000); // светодиод нв 11 мигает 1.0+1.0 сек
qw_blink VD4(10, 900); // светодиод нв 10 мигает 0.9+0.9 сек
qw_blink VD5(9, 800); // светодиод нв 9 мигает 0.8+0.8 сек
qw_blink VD6(8, 700); // светодиод нв 8 мигает 0.7+0.7 сек
qw_blink VD7(7, 600); // светодиод нв 7 мигает 0.6+0.6 сек
qw_blink VD8(6, 500); // светодиод нв 6 мигает 0.5+0.5 сек
qw_blink VD9(5, 400); // светодиод нв 5 мигает 0.4+0.4 сек
qw_blink VD10(4, 300); // светодиод нв 4 мигает 0.3+0.3 сек
qw_blink VD11(3, 200); // светодиод нв 3 мигает 0.2+0.2 сек
qw_blink VD12(2, 100); // светодиод нв 2 мигает 0.1+0.1 сек
qw_neddy neddy(2000);// отпавка в Serial каждые 2 сек
void setup() {
Serial.begin(9600); //устанавливаем последовательное соединение
}
void loop() {
VD1.go();
VD2.go();
VD3.go();
VD4.go();
VD5.go();
VD6.go();
VD7.go();
VD8.go();
VD9.go();
VD10.go();
VD11.go();
VD12.go();
neddy.go();
}
Ну собственно скеч.
// ---класс вспышка---
class qw_blink {
public:
qw_blink(int pin,unsigned long span);
void go();// драйвер blink
private:
unsigned long span;// интервал гашения или включения
unsigned long future;// время сменить состояние гашения или включения
int pin;// номер вывода
boolean state;// состояние светодиода
};
qw_blink::qw_blink(int pin,unsigned long span){
this->pin = pin;
pinMode(pin, OUTPUT);
this->span = span;
future = span+millis();
state = 0;
digitalWrite(pin, state);
}
void qw_blink::go(){
if (millis() < future) return;
future = span+millis();
state = ! state ;
digitalWrite(pin, state);
}
// ====== Программа ======
qw_blink VD1(13,1200); // светодиод нв 13 мигает 1.2+1.2 сек
qw_blink VD2(12,1100); // светодиод нв 12 мигает 1.1+1.1 сек
qw_blink VD3(11,1000); // светодиод нв 11 мигает 1.0+1.0 сек
qw_blink VD4(10, 900); // светодиод нв 10 мигает 0.9+0.9 сек
qw_blink VD5(9, 800); // светодиод нв 9 мигает 0.8+0.8 сек
qw_blink VD6(8, 700); // светодиод нв 8 мигает 0.7+0.7 сек
qw_blink VD7(7, 600); // светодиод нв 7 мигает 0.6+0.6 сек
qw_blink VD8(6, 500); // светодиод нв 6 мигает 0.5+0.5 сек
qw_blink VD9(5, 400); // светодиод нв 5 мигает 0.4+0.4 сек
qw_blink VD10(4, 300); // светодиод нв 4 мигает 0.3+0.3 сек
qw_blink VD11(3, 200); // светодиод нв 3 мигает 0.2+0.2 сек
qw_blink VD12(2, 100); // светодиод нв 2 мигает 0.1+0.1 сек
void setup() {
}
void loop() {
VD1.go();
VD2.go();
VD3.go();
VD4.go();
VD5.go();
VD6.go();
VD7.go();
VD8.go();
VD9.go();
VD10.go();
VD11.go();
VD12.go();
}