Помогите запихнуть скетч
- Войдите на сайт для отправки комментариев
Собственно имеется attiny 2313
и требуется вместить туда такое
void setup() {
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(16, OUTPUT);
pinMode(13, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
Serial.begin(9600);
}
void loop() {
unsigned short value,digit[3];
value=Serial.read();
digit[1]=value%10;
digit[2]=value/10%10;
digit[0]= value/10/10%10;
for(unsigned short i=0;i<3;i++)clock_show_digit(digit[i], i);
}
void clock_all_off(void) {
digitalWrite(11, LOW);
digitalWrite(10, LOW);
digitalWrite(9, LOW);
digitalWrite(7, LOW);
digitalWrite(16, LOW);
digitalWrite(13, LOW);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);}
void clock_show_digit(unsigned short value,unsigned short i) {
clock_all_off();
if (i==0)digitalWrite(9, HIGH);
if (i==1){digitalWrite(10, HIGH); digitalWrite(7, HIGH);}
if (i==2)digitalWrite(11, HIGH);
if (value == 0 || value == 2 || value == 3 || value == 5 || value == 6 || value == 7 || value == 8 || value == 9) digitalWrite(16, HIGH);
if (value == 1 || value == 2 || value == 3 || value == 4 || value == 7 || value == 8 || value == 9 || value == 0) digitalWrite(13, HIGH);
if (value == 0 || value == 1 || value == 3 || value == 4 || value == 7 || value == 6 || value == 5 || value == 8 || value == 9) digitalWrite(2, HIGH);
if (value == 2 || value == 3 || value == 5 || value == 6 || value == 0 || value == 8 || value == 9) digitalWrite(3, HIGH);
if (value == 0 || value == 2 || value == 8 || value == 6) digitalWrite(4, HIGH);
if (value == 0 || value == 4 || value == 5 || value == 6 || value == 8 || value == 9) digitalWrite(5, HIGH);
if (value == 2 || value == 3 || value == 4 || value == 5 || value == 6 || value == 8 || value == 9) digitalWrite(6, HIGH);
}
Вопрос то в чем? Скетч как скетч. Неоптимальный, но и не самый плохой.
Работай с битами регистра напрямую, так быстрее и код меньше будет. http://www.arduino.cc/en/Reference/PortManipulation
Только выясни, какие регистры нужно менять именно в твоем МК. В статье про атмегу написано.
Вдогонку, более понятная статья http://allaboutee.com/2011/07/04/arduino-tip-1-data-direction-registers/
Расскажи подробнее про clock_show_digit, что за параметры у нее? И схему подключения индикаторов бы неплохо.