помогите привести код к нормальному виду;
- Войдите на сайт для отправки комментариев
Втр, 23/05/2017 - 14:33
написал код для работы ардуино и дешифратора, и получилось что каждый раз при поступлении команды с сериал запускаю цикл который увеличивает значение счетчика. помогите написать код так чтобы счетчик запускался в начале кода, и можно было в любое время выйти из цикла.
int VXOD1 = 9;
int VXOD2 = 6;
int VXOD3 = 5;
int VXOD4 = 4;
int val;
void setup(){
pinMode(VXOD1,OUTPUT);
pinMode(VXOD2,OUTPUT);
pinMode(VXOD3,OUTPUT);
pinMode(VXOD4,OUTPUT);
Serial.begin(9600); // инициализируем прередачу данных по ком порту на скорости 9600 бод.
}
void loop(){
if (Serial.available()) {
val = Serial.read();
if (val == '1'){// 2led
for(int i =0; ; i++){
digitalWrite(VXOD1,(i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем
delay(100);
}
}//закрывающие скобки
if (val == '2'){ // 3led
for(int i =0; ; i++){
digitalWrite(VXOD2,(i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем
delay(100);
}
}//закрывающие скобки
if (val == '3'){ // 4led
for(int i =0; ; i++){
digitalWrite(VXOD1,(i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем
digitalWrite(VXOD2,(i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем
delay(250);
}
}//закрывающие скобки
if (val == '4'){ // 5led
for(int i =0; ; i++){
digitalWrite(VXOD3,(i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем
delay(100);
}
}//закрывающие скобки
if (val == '5'){ // 6led
for(int i =0; ; i++){
digitalWrite(VXOD1,(i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем
digitalWrite(VXOD3,(i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем
delay(250);
}
}//закрывающие скобки
if (val == '6'){ // 7led
for(int i =0; ; i++){
digitalWrite(VXOD2,(i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем
digitalWrite(VXOD3,(i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем
delay(250);
}
}//закрывающие скобки 8й
if (val == '7'){ // 8led
for(int i =0; ; i++){
digitalWrite(VXOD1,(i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем
digitalWrite(VXOD2,(i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем
digitalWrite(VXOD3,(i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем
delay(250);
}
}//закрывающие скобк*/
if (val == '8'){ // 9led
for(int i =0; ; i++){
digitalWrite(VXOD4,(i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем
delay(100);
}
}
if (val == '9'){ // 10led
for(int i =0; ; i++){
digitalWrite(VXOD1,(i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем
digitalWrite(VXOD4,(i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем
delay(250);
}
}
if (val == 'Q'){ // 11led
for(int i =0; ; i++){
digitalWrite(VXOD2,(i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем
digitalWrite(VXOD4,(i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем
delay(250);
}
}
if (val == 'W'){ // 12led
for(int i =0; ; i++){
digitalWrite(VXOD1,(i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем
digitalWrite(VXOD2,(i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем
digitalWrite(VXOD4,(i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем
delay(250);
}
}
if (val == 'E'){ // 13led
for(int i =0; ; i++){
digitalWrite(VXOD3,(i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем
digitalWrite(VXOD4,(i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем
delay(250);
}
}
if (val == 'R'){ // 14led
for(int i =0; ; i++){
digitalWrite(VXOD1,(i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем
digitalWrite(VXOD3,(i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем
digitalWrite(VXOD4,(i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем
delay(250);
}
}
if (val == 'T'){ // 15led
for(int i =0; ; i++){
digitalWrite(VXOD2,(i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем
digitalWrite(VXOD3,(i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем
digitalWrite(VXOD4,(i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем
delay(250);
}
}
if (val == 'Y'){ // 16led
for(int i =0; ; i++){
digitalWrite(VXOD1,(i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем
digitalWrite(VXOD2,(i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем
digitalWrite(VXOD3,(i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем
digitalWrite(VXOD4,(i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем
delay(250);
}
}
}
Сначала научитесь:
1) понятно формулировать свои мысли
2) вставлять код программы про правилам форума
1) понятно формулировать свои мысли
шо тут непонятного? - // на четных проходах включаем, на нечетных выключаем
Если я вас правильно понял. Отправка восклицательного знака выводит из цикла
int VXOD1 = 9; int VXOD2 = 6; int VXOD3 = 5; int VXOD4 = 4; int val; void setup() { pinMode(VXOD1, OUTPUT); pinMode(VXOD2, OUTPUT); pinMode(VXOD3, OUTPUT); pinMode(VXOD4, OUTPUT); Serial.begin(9600); // инициализируем прередачу данных по ком порту на скорости 9600 бод. } void loop() { if (Serial.available()) { byte i = 0; val = Serial.read(); while (1) { if (Serial.peek() == '!') { Serial.read(); break; } else if (Serial.peek() > -1) { i = 0; val = Serial.read(); } if (val == '1') { // 2led digitalWrite(VXOD1, (i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем delay(100); }//закрывающие скобка if (val == '2') { // 3led digitalWrite(VXOD2, (i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем delay(100); }//закрывающие скобки if (val == '3') { // 4led digitalWrite(VXOD1, (i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем digitalWrite(VXOD2, (i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем delay(250); }//закрывающие скобки if (val == '4') { // 5led digitalWrite(VXOD3, (i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем delay(100); }//закрывающие скобки if (val == '5') { // 6led digitalWrite(VXOD1, (i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем digitalWrite(VXOD3, (i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем delay(250); }//закрывающие скобки if (val == '6') { // 7led digitalWrite(VXOD2, (i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем digitalWrite(VXOD3, (i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем delay(250); }//закрывающие скобки 8й if (val == '7') { // 8led digitalWrite(VXOD1, (i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем digitalWrite(VXOD2, (i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем digitalWrite(VXOD3, (i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем delay(250); }//закрывающие скобк*/ if (val == '8') { // 9led digitalWrite(VXOD4, (i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем delay(100); } if (val == '9') { // 10led digitalWrite(VXOD1, (i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем digitalWrite(VXOD4, (i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем delay(250); } if (val == 'Q') { // 11led digitalWrite(VXOD2, (i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем digitalWrite(VXOD4, (i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем delay(250); } if (val == 'W') { // 12led digitalWrite(VXOD1, (i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем digitalWrite(VXOD2, (i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем digitalWrite(VXOD4, (i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем delay(250); } if (val == 'E') { // 13led digitalWrite(VXOD3, (i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем digitalWrite(VXOD4, (i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем delay(250); } if (val == 'R') { // 14led digitalWrite(VXOD1, (i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем digitalWrite(VXOD3, (i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем digitalWrite(VXOD4, (i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем delay(250); } if (val == 'T') { // 15led digitalWrite(VXOD2, (i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем digitalWrite(VXOD3, (i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем digitalWrite(VXOD4, (i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем delay(250); } if (val == 'Y') { // 16led digitalWrite(VXOD1, (i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем digitalWrite(VXOD2, (i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем digitalWrite(VXOD3, (i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем digitalWrite(VXOD4, (i % 2 == 0) ? 1 : 0); // на четных проходах включаем, на нечетных выключаем delay(250); } if (i > 254) { i = 0; } i++; } } }