[spoiler='Скетч']
int Lc = 11;
int Lv = 13;
int Lg = 10;
int Lt = 9;
int Lb = 12;
int Rc = 6;
int Rv = 4;
int Rg = 7;
int Rt = 8;
int Rb = 5;
int buttonPin = 2;
int buttonPin2 = 3;
int buttonState;
long ranL;
long ranR;
int time = 2000;
void ledoff ()
{
digitalWrite (Lc, LOW);
digitalWrite (Lt, LOW);
digitalWrite (Lb, LOW);
digitalWrite (Lv, LOW);
digitalWrite (Lg, LOW);
digitalWrite (Rc, LOW);
digitalWrite (Rt, LOW);
digitalWrite (Rb, LOW);
digitalWrite (Rv, LOW);
digitalWrite (Rg, LOW);
}
void setup ()
{
pinMode (Lc, OUTPUT);
pinMode (Lv, OUTPUT);
pinMode (Lg, OUTPUT);
pinMode (Lt, OUTPUT);
pinMode (Lb, OUTPUT);
pinMode (Rc, OUTPUT);
pinMode (Rv, OUTPUT);
pinMode (Rg, OUTPUT);
pinMode (Rt, OUTPUT);
pinMode (Rb, OUTPUT);
pinMode (buttonPin, INPUT);
pinMode (buttonPin2, INPUT);
Serial.begin(9600);
randomSeed(analogRead(0));
}
void loop()
{
// if (digitalRead(buttonPin2 == HIGH)){
// digitalWrite (Rc, HIGH);
// }
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH){
for(int i=1; i<=8; i++)
{
ledoff();
ranL = random(1, 10);
ranR = random(1, 10);
if (ranL == 1){
digitalWrite (Lc, HIGH);
//delay (time);
}
if (ranL == 2){
digitalWrite (Lt, HIGH);
//delay (time);
}
if (ranL == 3){
digitalWrite (Lb, HIGH);
//delay (time);
}
if (ranL == 4){
digitalWrite (Lc, HIGH);
digitalWrite (Lt, HIGH);
//delay (time);
}
if (ranL == 5){
digitalWrite (Lc, HIGH);
digitalWrite (Lb, HIGH);
//delay (time);
}
if (ranL == 6){
digitalWrite (Lt, HIGH);
digitalWrite (Lb, HIGH);
//delay (time);
}
if (ranL == 7){
digitalWrite (Lc, HIGH);
digitalWrite (Lt, HIGH);
digitalWrite (Lb, HIGH);
//delay (time);
}
if (ranL == 8){
digitalWrite (Lt, HIGH);
digitalWrite (Lb, HIGH);
digitalWrite (Lv, HIGH);
//delay (time);
}
if (ranL == 9){
digitalWrite (Lt, HIGH);
digitalWrite (Lb, HIGH);
digitalWrite (Lg, HIGH);
//delay (time);
}
// Right side
if (ranR == 1){
digitalWrite (Rc, HIGH);
//delay (time);
}
if (ranR == 2){
digitalWrite (Rt, HIGH);
//delay (time);
}
if (ranR == 3){
digitalWrite (Rb, HIGH);
//delay (time);
}
if (ranR == 4){
digitalWrite (Rc, HIGH);
digitalWrite (Rt, HIGH);
//delay (time);
}
if (ranR == 5){
digitalWrite (Rc, HIGH);
digitalWrite (Rb, HIGH);
//delay (time);
}
if (ranR == 6){
digitalWrite (Rt, HIGH);
digitalWrite (Rb, HIGH);
//delay (time);
}
if (ranR == 7){
digitalWrite (Rc, HIGH);
digitalWrite (Rt, HIGH);
digitalWrite (Rb, HIGH);
// delay (time);
}
if (ranR == 8){
digitalWrite (Rt, HIGH);
digitalWrite (Rb, HIGH);
digitalWrite (Rv, HIGH);
//delay (time);
}
if (ranR == 9){
digitalWrite (Rt, HIGH);
digitalWrite (Rb, HIGH);
digitalWrite (Rg, HIGH);
//delay (time);
}
//delay (time);
delay(20+i*i*2);
}
}
}
[/spoiler]
Выше мой код для самих игральных костей. Понятно, что если намутить десяток подобных конструкций то будут эффекты какие надо, но имхо так будет очень криво и писать неудобно. Нужна процедура вывода состояний на пины и место где все это хранится.
Так все это выглядит на печатной плате. Буквами разных цветов обозначены разные группы светодиодов. Как правильно сделать так чтобы, например, крутить огни по часовой стрелке (Lc горит постоянно, Lg, Lb, Lv, Lt зажигаются по очереди с интервалом 200мс ).
подскажите если не весь код, то основные его конструкции и логику работы.
.Кстати, почему C++ а не C?
Что предлагает стандартная среда Arduino на том и делаю. Думаю, на моем уровне разница не будет заметна.
Сообщение изменено: BiHiTRiLL (07 марта 2015 - 00:00 )