Arduino Unoで次のプログラムを教えてください。 1秒間隔で、下記のように7セグメントLEDの表示が変化するプログラムを作成。 0000→0001→0002…→0009→0010→0011…→0099→0100→0101→繰り返し const int anode_pins[] = {12, 8, 5, 3, 2, 11, 6, 4}; // A B C D E F G DP const int cathode_pins[] = {7, 9, 10, 13}; // DIG4 DIG3 DIG2 DIG1 const int number_of_anode_pins = sizeof(anode_pins) / sizeof(anode_pins[0]); const int number_of_cathode_pins = sizeof(cathode_pins) / sizeof(cathode_pins[0]); int numbers_to_display = 0; // LEDに表示する数字を保持する変数 const int digits[] = { 0b00111111, // 0 0b00000110, // 1 0b01011011, // 2 0b01001111, // 3 0b01100110, // 4 0b01101101, // 5 0b01111101, // 6 0b00100111, // 7 0b01111111, // 8 0b01101111, // 9 }; // 1桁の数字(n)を表示する void display_number (int n) { for (int i = 0; i < number_of_anode_pins; i++) { digitalWrite(anode_pins[i], digits[n] & (1 << i) ? HIGH : LOW); } } // アノードをすべてLOWにする void clear_segments() { for (int j = 0; j < number_of_anode_pins; j++) { digitalWrite(anode_pins[j], LOW); } } void display_numbers () { int n = numbers_to_display; // number_to_displayの値を保持し変数にコピー for (int i = 0; i < number_of_cathode_pins; i++) { digitalWrite(cathode_pins[i], LOW); display_number(n % 10); // 最後の一桁を表示する delayMicroseconds(100); clear_segments(); digitalWrite(cathode_pins[i], HIGH); n = n / 10; // 10で割る } } void set_numbers(int n) { numbers_to_display = n; }
C言語関連