помогите пожалуйста оптимизировать.
- Войдите на сайт для отправки комментариев
Пнд, 07/12/2015 - 23:53
Вот нехитрый код:
int LedPin1=2;
int LedPin2=3;
int LedPin3=4;
int LedPin4=5;
void setup ()
{
pinMode(LedPin1,OUTPUT);
pinMode(LedPin2,OUTPUT);
pinMode(LedPin3,OUTPUT);
pinMode(LedPin4,OUTPUT);
}
void loop()
{
digitalWrite(LedPin1,LOW);
digitalWrite(LedPin2,LOW);
digitalWrite(LedPin3,LOW);
digitalWrite(LedPin4,LOW);
delay (1000);
digitalWrite(LedPin1,LOW);
digitalWrite(LedPin2,LOW);
digitalWrite(LedPin3,LOW);
digitalWrite(LedPin4,HIGH);
delay (1000);
digitalWrite(LedPin1,LOW);
digitalWrite(LedPin2,LOW);
digitalWrite(LedPin3,HIGH);
digitalWrite(LedPin4,LOW);
delay (1000);
digitalWrite(LedPin1,LOW);
digitalWrite(LedPin2,LOW);
digitalWrite(LedPin3,HIGH);
digitalWrite(LedPin4,HIGH);
delay (1000);
digitalWrite(LedPin1,LOW);
digitalWrite(LedPin2,HIGH);
digitalWrite(LedPin3,LOW);
digitalWrite(LedPin4,LOW);
delay (1000);
digitalWrite(LedPin1,LOW);
digitalWrite(LedPin2,HIGH);
digitalWrite(LedPin3,LOW);
digitalWrite(LedPin4,HIGH);
delay (1000);
digitalWrite(LedPin1,LOW);
digitalWrite(LedPin2,HIGH);
digitalWrite(LedPin3,HIGH);
digitalWrite(LedPin4,LOW);
delay (1000);
digitalWrite(LedPin1,LOW);
digitalWrite(LedPin2,HIGH);
digitalWrite(LedPin3,HIGH);
digitalWrite(LedPin4,HIGH);
delay (1000);
digitalWrite(LedPin1,HIGH);
digitalWrite(LedPin2,LOW);
digitalWrite(LedPin3,LOW);
digitalWrite(LedPin4,LOW);
delay (1000);
digitalWrite(LedPin1,HIGH);
digitalWrite(LedPin2,LOW);
digitalWrite(LedPin3,LOW);
digitalWrite(LedPin4,HIGH);
delay (1000)
это управление дешифратором для ламп. (газораз. индикаторы)
задача поочерёдно включать лампы (6 штук) и прогонять от 0 до 9.
этот код для 1й лампы. добавятся в работу ещё 6 пинов, которые и должны включаться поочерёдно.
вопрос - как сделать, чтобы не писать всё вышеизложенное 6 раз.
думал по цикл for, но чёт не догнал.
int LedPin1 = 2; int LedPin2 = 3; int LedPin3 = 4; int LedPin4 = 5; void setup () { pinMode(LedPin1, OUTPUT); pinMode(LedPin2, OUTPUT); pinMode(LedPin3, OUTPUT); pinMode(LedPin4, OUTPUT); } void proverka() { digitalWrite(LedPin1, LOW); digitalWrite(LedPin2, LOW); digitalWrite(LedPin3, LOW); digitalWrite(LedPin4, LOW); delay (1000); digitalWrite(LedPin1, LOW); digitalWrite(LedPin2, LOW); digitalWrite(LedPin3, LOW); digitalWrite(LedPin4, HIGH); delay (1000); digitalWrite(LedPin1, LOW); digitalWrite(LedPin2, LOW); digitalWrite(LedPin3, HIGH); digitalWrite(LedPin4, LOW); delay (1000); digitalWrite(LedPin1, LOW); digitalWrite(LedPin2, LOW); digitalWrite(LedPin3, HIGH); digitalWrite(LedPin4, HIGH); delay (1000); digitalWrite(LedPin1, LOW); digitalWrite(LedPin2, HIGH); digitalWrite(LedPin3, LOW); digitalWrite(LedPin4, LOW); delay (1000); digitalWrite(LedPin1, LOW); digitalWrite(LedPin2, HIGH); digitalWrite(LedPin3, LOW); digitalWrite(LedPin4, HIGH); delay (1000); digitalWrite(LedPin1, LOW); digitalWrite(LedPin2, HIGH); digitalWrite(LedPin3, HIGH); digitalWrite(LedPin4, LOW); delay (1000); digitalWrite(LedPin1, LOW); digitalWrite(LedPin2, HIGH); digitalWrite(LedPin3, HIGH); digitalWrite(LedPin4, HIGH); delay (1000); digitalWrite(LedPin1, HIGH); digitalWrite(LedPin2, LOW); digitalWrite(LedPin3, LOW); digitalWrite(LedPin4, LOW); delay (1000); digitalWrite(LedPin1, HIGH); digitalWrite(LedPin2, LOW); digitalWrite(LedPin3, LOW); digitalWrite(LedPin4, HIGH); delay (1000); } void loop() { proverka(); }byte dcPin3 = 2; byte dcPin2 = 3; byte dcPin1 = 4; byte dcPin0 = 5; byte znPin5 = 11; byte znPin4 = 10; byte znPin3 = 9; byte znPin2 = 8; byte znPin1 = 7; byte znPin0 = 6; void setup () { pinMode( dcPin3, OUTPUT ); pinMode( dcPin2, OUTPUT ); pinMode( dcPin1, OUTPUT ); pinMode( dcPin0, OUTPUT ); pinMode( znPin5, OUTPUT ); pinMode( znPin4, OUTPUT ); pinMode( znPin3, OUTPUT ); pinMode( znPin2, OUTPUT ); pinMode( znPin1, OUTPUT ); pinMode( znPin0, OUTPUT ); } void loop() { for ( byte n = 0; n < 6; n++ ) { digitalWrite( n + 6, HIGH ); for ( byte i = 0; i < 10; i++ ) { digitalWrite( dcPin3, ( i & 0x08 >> 3 ) ); digitalWrite( dcPin2, ( i & 0x04 >> 2 ) ); digitalWrite( dcPin1, ( i & 0x02 >> 1 ) ); digitalWrite( dcPin0, ( i & 0x01 >> 0 ) ); delay (1000); } digitalWrite( n + 6, LOW ); } while( 1 ); }byte dcPin3 = 2; byte dcPin2 = 3; byte dcPin1 = 4; byte dcPin0 = 5; byte znPin5 = 11; byte znPin4 = 10; byte znPin3 = 9; byte znPin2 = 8; byte znPin1 = 7; byte znPin0 = 6; void setup () { Serial.begin( 9600 ); pinMode( dcPin3, OUTPUT ); pinMode( dcPin2, OUTPUT ); pinMode( dcPin1, OUTPUT ); pinMode( dcPin0, OUTPUT ); pinMode( znPin5, OUTPUT ); pinMode( znPin4, OUTPUT ); pinMode( znPin3, OUTPUT ); pinMode( znPin2, OUTPUT ); pinMode( znPin1, OUTPUT ); pinMode( znPin0, OUTPUT ); } void loop() { for ( byte n = 0; n < 6; n++ ) { digitalWrite( n + 6, HIGH ); for ( byte i = 0; i < 10; i++ ) { digitalWrite( dcPin3, ( i & 0x08 >> 3 ) ); digitalWrite( dcPin2, ( i & 0x04 >> 2 ) ); digitalWrite( dcPin1, ( i & 0x02 >> 1 ) ); digitalWrite( dcPin0, ( i & 0x01 >> 0 ) ); Serial.print( "razrjad = " ); Serial.print( "\t" ); Serial.print( n, DEC ); Serial.print( "\t" ); Serial.print( "digit = " ); Serial.print( "\t" ); Serial.println( i, DEC ); delay (1000); } digitalWrite( n + 6, LOW ); } while( 1 ); }спасибо большое)