Go Down

Topic: Помогите с написанием кода!!! (Read 1 time) previous topic - next topic

neznayka_V_shlape

Код, при котором RGB светодиод по нажатию кнопки меняет цвета(всего 7) уже написан и отлично работает(приложу его ниже). Но очень хотелось бы пойти дальше и изменить код так, чтобы каждый цвет еще и мигал.
Подскажите пож, как это сделать?
Сам уже пробовал, но не получается : '(

вот код:

Code: [Select]

const int BUTTON=2;
const int GLED=10;
const int RLED=11;
const int BLED=9;


boolean lastButton = LOW;
boolean currentButton = LOW;
int ledMode=0;

void setup()
{
 
  pinMode (BLED, OUTPUT);
  pinMode (GLED, OUTPUT);
  pinMode (RLED, OUTPUT);
  pinMode (BUTTON, INPUT);

}


boolean debounce(boolean last)
{
  boolean  current = digitalRead(BUTTON);
if (last != current)
{
  delay(5);
  current = digitalRead (BUTTON);
  return current;
}
}

void setMode( int mode)
{
  // КРАСНЫЙ
  if (mode ==1)
  {
 
digitalWrite(RLED, HIGH);     
digitalWrite(GLED, LOW);
digitalWrite(BLED, LOW);
  }
 
// зеленый
else if( mode==2)
{
digitalWrite(RLED, LOW);
digitalWrite(GLED,HIGH );
digitalWrite(BLED, LOW);
}

// синий
else if( mode==3)
{
digitalWrite(RLED, LOW);
digitalWrite(GLED, LOW);
digitalWrite(BLED, HIGH);
}
//ПУРПУРНЫЙ КР+С
else if( mode==4)
{
digitalWrite(RLED, 127);
digitalWrite(GLED, 0);
digitalWrite(BLED, 127);
}
//бирюзовый с+зел
else if( mode==5)
{
digitalWrite(RLED, 0);
digitalWrite(GLED, 200);
digitalWrite(BLED, 90);
}
//ОРАНЖЕВЫЙ ЗЕЛ+КР
else if( mode==6)
{
digitalWrite(RLED, 224);
digitalWrite(GLED, 1);
digitalWrite(BLED, 0);
}
// БЕЛЫЙ  ЗЕЛ+КР+С
else if( mode==7)
{
digitalWrite(RLED, 127);
digitalWrite(GLED, 127);
digitalWrite(BLED, 127);
}

 else
 {
digitalWrite(RLED, LOW);
digitalWrite(GLED, LOW);
digitalWrite(BLED, LOW);
 }
}
void loop()
{
currentButton = debounce(lastButton);
if (lastButton == LOW &&  currentButton== HIGH)
{
ledMode++;
}
lastButton=currentButton;
if (ledMode==8)
ledMode=0;
setMode(ledMode);
}

Chaaman

Помогите пожалуйста!
В интернете нашел проект с кодом .
Хочу сделать вочдог на arduino mini pro.
#include <SPI.h>
#include <Ethernet.h>
#include <ICMPPing.h
#include <MsTimer2.h>

#define RSTpin 9
#define POWERpin 8

int InactivityPeriod = 10 * 60; // Время между опросами ресурсов, 10 минут.

byte mac[] = {0xC0, 0xFF, 0xEC, 0xAC, 0xA0, 0x01}; // mac-адрес. Должен не свопадать ни с одним из существующих в данной сети
byte ip[] = {192, 168, 1, 112}; // ip-адрес устройста.

SOCKET pingSocket = 0;

char buffer [256];
ICMPPing ping(pingSocket, (uint16_t)random(0, 255));

byte ErrorCont;
int Inactivity;

void TickEvery1s() // Эта процедура вызывается каждые полсекунды
{
  if (Inactivity > 0) Inactivity--;
}

void setup()
{
  Inactivity = InactivityPeriod;
  pinMode(RSTpin, OUTPUT);
  digitalWrite(RSTpin, LOW); delay(20); digitalWrite(RSTpin, HIGH); delay(200);  // Перезагружаем плату
  pinMode(POWERpin, OUTPUT);
  digitalWrite(POWERpin, HIGH);  //Включаем нагрузку
  Ethernet.begin(mac, ip);
  MsTimer2::set(1000, TickEvery1s); // период вызова каждые 1000ms
  MsTimer2::start();

}

void loop()
{
  //while (Inactivity>0) {delay(1);}
  if (Inactivity > 0) {
    return;
    delay(1);
  }
  ErrorCont = 0;
  for (byte i = 0; i <= 3; i++) {
    ICMPEchoReply GoogleechoReply = ping(IPAddress (8, 8, 8, 8), 2);
    if (GoogleechoReply.status != SUCCESS) {
      ErrorCont++;
    }
    delay(500);
  }
  for (byte i = 0; i <= 3; i++) {
    ICMPEchoReply YandexechoReply = ping(IPAddress (77, 88, 8, 8), 2);
    if (YandexechoReply.status != SUCCESS) {
      ErrorCont++;
    }
    delay(500);
  }

  if (ErrorCont >= 8) {
    digitalWrite(POWERpin, LOW); delay(10000); digitalWrite(POWERpin, HIGH);
  }  // Перезагружаем нагрузку

  Inactivity = InactivityPeriod;  // Заводим таймер до следующей проверки
}

Начинаю его проверять выходит множество ошибок. Может проблема в библиотеке Ethernet.h. Менял ее
на Ethernet2.h. Тоже не помогает.

Go Up