Подскажите пожалуйста с трехцветным светодиодом и генератором случайных значений
- Войдите на сайт для отправки комментариев
Втр, 04/07/2017 - 00:51
Просьба не пинать за кривой код, наверняка можно его было сократить в разы но я еще только учусь) Помогите пожалуйста разобраться с генератором случайных значений... Задача, сделать так, что бы при каждом сробатовании например ик датчика, меенялся цвет трехцветного светодиода,
#define RED_PIN 9
#define GREEN_PIN 10
#define BLUE_PIN 11
#define DIGITAL_IN 7
long randNumber;
void setup()
{
Serial.begin(9600);
pinMode(RED_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
pinMode(BLUE_PIN, OUTPUT);
randomSeed(analogRead(1));
}
void loop()
{
int sensorValue = analogRead(A0);
Serial.println(sensorValue);
delay(1);
if (sensorValue < 640)
{
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, LOW);
}
else if (sensorValue > 610)
{
mainColors (RED_PIN,GREEN_PIN,BLUE_PIN);
mainColorsRed (RED_PIN,GREEN_PIN,BLUE_PIN);
mainColorsGreen (RED_PIN,GREEN_PIN,BLUE_PIN);
mainColorsBlue (RED_PIN,GREEN_PIN,BLUE_PIN);
mainColorsYellow (RED_PIN,GREEN_PIN,BLUE_PIN);
mainColorsTurquoise (RED_PIN,GREEN_PIN,BLUE_PIN);
mainColorsPink (RED_PIN,GREEN_PIN,BLUE_PIN);
mainColorsWhite (RED_PIN,GREEN_PIN,BLUE_PIN);
}
}
void mainColors(int x, int y, int z) //все светодиоды выключены
{
digitalWrite(x, LOW);
digitalWrite(y, LOW);
digitalWrite(z, LOW);
delay(1000);
}
void mainColorsRed(int x, int y, int z) // КРАСНЫЙ
{
digitalWrite(x, HIGH);
digitalWrite(y, LOW);
digitalWrite(z, LOW);
delay(1000);
}
void mainColorsGreen(int x, int y, int z) // Включаем ЗЕЛЕНЫЙ
{
digitalWrite(x, LOW);
digitalWrite(y, HIGH);
digitalWrite(z, LOW);
delay(1000);
}
void mainColorsBlue(int x, int y, int z) // Включаем СИНИЙ – BLUE_PIN, HIGH.
{
digitalWrite(x, LOW);
digitalWrite(y, LOW);
digitalWrite(z, HIGH);
delay(1000);
}
void mainColorsYellow(int x, int y, int z) // Включаем ЖЕЛТЫЙ – RED и BLUE HIGH.
{
digitalWrite(x, HIGH);
digitalWrite(y, HIGH);
digitalWrite(z, LOW);
delay(1000);
}
void mainColorsTurquoise(int x, int y, int z) // БИРЮЗОВЫЙ – GREEN и BLUE
{
digitalWrite(x, LOW);
digitalWrite(y, HIGH);
digitalWrite(z, HIGH);
delay(1000);
}
void mainColorsPink(int x, int y, int z) //РОЗОВЫЙ
{
digitalWrite(x, HIGH);
digitalWrite(y, LOW);
digitalWrite(z, HIGH);
delay(1000);
}
void mainColorsWhite(int x, int y, int z) //БЕЛЫЙ
{
digitalWrite(x, HIGH);
digitalWrite(y, HIGH);
digitalWrite(z, HIGH);
delay(1000);
}
не нашел, где туть генерируюца случайные числа. И пока код неправильно вставлен, никто и смотреть не будет
В том то и дело, что никак не могу понять, где и как приминить генерацию чисел или она может вообще не нужна и можно обойтись без нее?
#define RED_PIN 9 #define GREEN_PIN 10 #define BLUE_PIN 11 #define DIGITAL_IN 7 void setup() { Serial.begin(9600); pinMode(RED_PIN, OUTPUT); pinMode(GREEN_PIN, OUTPUT); pinMode(BLUE_PIN, OUTPUT); } void loop() { int sensorValue = analogRead(A0); Serial.println(sensorValue); delay(1); if (sensorValue < 640) { digitalWrite(RED_PIN, LOW); digitalWrite(GREEN_PIN, LOW); digitalWrite(BLUE_PIN, LOW); } else if (sensorValue > 610) { mainColors (RED_PIN,GREEN_PIN,BLUE_PIN); mainColorsRed (RED_PIN,GREEN_PIN,BLUE_PIN); mainColorsGreen (RED_PIN,GREEN_PIN,BLUE_PIN); mainColorsBlue (RED_PIN,GREEN_PIN,BLUE_PIN); mainColorsYellow (RED_PIN,GREEN_PIN,BLUE_PIN); mainColorsTurquoise (RED_PIN,GREEN_PIN,BLUE_PIN); mainColorsPink (RED_PIN,GREEN_PIN,BLUE_PIN); mainColorsWhite (RED_PIN,GREEN_PIN,BLUE_PIN); } } void mainColors(int x, int y, int z) // Выкл. – все светодиоды выключены { digitalWrite(x, LOW); digitalWrite(y, LOW); digitalWrite(z, LOW); delay(1000); } void mainColorsRed(int x, int y, int z) // КРАСНЫЙ { digitalWrite(x, HIGH); digitalWrite(y, LOW); digitalWrite(z, LOW); delay(1000); } void mainColorsGreen(int x, int y, int z) // ЗЕЛЕНЫЙ. { digitalWrite(x, LOW); digitalWrite(y, HIGH); digitalWrite(z, LOW); delay(1000); } void mainColorsBlue(int x, int y, int z) //СИНИЙ. { digitalWrite(x, LOW); digitalWrite(y, LOW); digitalWrite(z, HIGH); delay(1000); } void mainColorsYellow(int x, int y, int z) //ЖЕЛТЫЙ. { digitalWrite(x, HIGH); digitalWrite(y, HIGH); digitalWrite(z, LOW); delay(1000); } void mainColorsTurquoise(int x, int y, int z) // БИРЮЗОВЫЙ { digitalWrite(x, LOW); digitalWrite(y, HIGH); digitalWrite(z, HIGH); delay(1000); } void mainColorsPink(int x, int y, int z) //РОЗОВЫЙ { digitalWrite(x, HIGH); digitalWrite(y, LOW); digitalWrite(z, HIGH); delay(1000); } void mainColorsWhite(int x, int y, int z) //БЕЛЫЙ { digitalWrite(x, HIGH); digitalWrite(y, HIGH); digitalWrite(z, HIGH); delay(1000); }обьясни внятно, какова должна быть логика приложения.
обьясни внятно, какова должна быть логика приложения.
обьясни внятно, какова должна быть логика приложения.
когда сробатывает датчик, загорается трехцветный светодиод, например зеленым цветом, после чего гаснет, при следующем сробатывании датчика, этот же светодиод загарается например желтым цветом ну и так далее.
#define RED_PIN 9 #define GREEN_PIN 10 #define BLUE_PIN 11 #define DIGITAL_IN 7 void setup() { Serial.begin(9600); pinMode(RED_PIN, OUTPUT); pinMode(GREEN_PIN, OUTPUT); pinMode(BLUE_PIN, OUTPUT); } void loop() { int sensorValue = analogRead(A0); Serial.println(sensorValue); delay(1); if (sensorValue < 640) { analogWrite(RED_PIN, 0); analogWrite(GREEN_PIN, 0); analogWrite(BLUE_PIN, 0); } else if (sensorValue > 610) { analogWrite(RED_PIN, random(255)); analogWrite(GREEN_PIN, random(255)); analogWrite(BLUE_PIN, random(255)); } }#define RED_PIN 9 #define GREEN_PIN 10 #define BLUE_PIN 11 #define DIGITAL_IN 7 void setup() { Serial.begin(9600); pinMode(RED_PIN, OUTPUT); pinMode(GREEN_PIN, OUTPUT); pinMode(BLUE_PIN, OUTPUT); } void loop() { int sensorValue = analogRead(A0); Serial.println(sensorValue); delay(1); if (sensorValue < 640) { analogWrite(RED_PIN, 0); analogWrite(GREEN_PIN, 0); analogWrite(BLUE_PIN, 0); } else if (sensorValue > 610) { analogWrite(RED_PIN, random(255)); analogWrite(GREEN_PIN, random(255)); analogWrite(BLUE_PIN, random(255)); } }Огромное Спасибо! А то я этот random и так и сяк а он никак)))