Помогите запихнуть скетч

Loginkr
Offline
Зарегистрирован: 23.06.2013

Собственно имеется 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);

  }

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Вопрос то в чем? Скетч как скетч. Неоптимальный, но и не самый плохой.

 

ZagZag
Offline
Зарегистрирован: 08.05.2014

Работай с битами регистра напрямую, так быстрее и код меньше будет. http://www.arduino.cc/en/Reference/PortManipulation

Только выясни, какие регистры нужно менять именно в твоем МК. В статье про атмегу написано.

Вдогонку, более понятная статья http://allaboutee.com/2011/07/04/arduino-tip-1-data-direction-registers/

Расскажи подробнее про clock_show_digit, что за параметры у нее? И схему подключения индикаторов бы неплохо.