//Адрессация выводов ATMEGA128, через штатную функцию digitalWrite() затруднена из-за усеченной адрессации этой функции в Arduino. //Поэтому, для каждого вывода порта, с подключенным к нему светодиодом, определяем собственный макрос включения и выключения. //Макрос включения (зажигания светодиода): L(номер светодиода на плате АрдуЁлка-01). //Макрос выключения (гашения светодиода): H(номер светодиода на плате АрдуЁлка-01). //Схемотехника АрдуЁлки-01 использует значительные токи управления светодиодами. Чтобы избежать перегрузки внутренней шины питания микроконтроллера ATMEGA128, //все светодиоды подключены катодами (-) к выводам микроконтроллера. //Это привело к тому, что для включения (зажигания) светодиода, необходимо записать низкий уровень в порт (L=Low), а для выключения (гашения) - высокий уровень (H=High). //Определяем макросы для каждого вывода микроконтроллера ATMEGA128 #define L1 PORTF&=~(1<<5); // RESET BIT; #define H1 PORTF|=(1<<5); //SET BIT; #define L2 PORTA&=~(1<<0); #define H2 PORTA|=(1<<0); #define L3 PORTA&=~(1<<1); #define H3 PORTA|=(1<<1); #define L4 PORTA&=~(1<<2); #define H4 PORTA|=(1<<2); #define L5 PORTA&=~(1<<5); #define H5 PORTA|=(1<<5); #define L6 PORTA&=~(1<<3); #define H6 PORTA|=(1<<3); #define L7 PORTF&=~(1<<7); #define H7 PORTF|=(1<<7); #define L8 PORTF&=~(1<<0); #define H8 PORTF|=(1<<0); #define L9 PORTF&=~(1<<1); #define H9 PORTF|=(1<<1); #define L10 PORTF&=~(1<<2); #define H10 PORTF|=(1<<2); #define L11 PORTF&=~(1<<3); #define H11 PORTF|=(1<<3); #define L12 PORTF&=~(1<<4); #define H12 PORTF|=(1<<4); #define L13 PORTA&=~(1<<6); #define H13 PORTA|=(1<<6); #define L14 PORTA&=~(1<<7); #define H14 PORTA|=(1<<7); #define L15 PORTG&=~(1<<2); #define H15 PORTG|=(1<<2); #define L16 PORTC&=~(1<<7); #define H16 PORTC|=(1<<7); #define L17 PORTC&=~(1<<6); #define H17 PORTC|=(1<<6); #define L18 PORTA&=~(1<<4); #define H18 PORTA|=(1<<4); #define L19 PORTF&=~(1<<6); #define H19 PORTF|=(1<<6); #define L20 PORTE&=~(1<<0); #define H20 PORTE|=(1<<0); #define L21 PORTE&=~(1<<5); #define H21 PORTE|=(1<<5); #define L22 PORTE&=~(1<<6); #define H22 PORTE|=(1<<6); #define L23 PORTE&=~(1<<4); #define H23 PORTE|=(1<<4); #define L24 PORTE&=~(1<<3); #define H24 PORTE|=(1<<3); #define L25 PORTE&=~(1<<2); #define H25 PORTE|=(1<<2); #define L26 PORTC&=~(1<<5); #define H26 PORTC|=(1<<5); #define L27 PORTC&=~(1<<4); #define H27 PORTC|=(1<<4); #define L28 PORTC&=~(1<<3); #define H28 PORTC|=(1<<3); #define L29 PORTC&=~(1<<2); #define H29 PORTC|=(1<<2); #define L30 PORTG&=~(1<<1); #define H30 PORTG|=(1<<1); #define L31 PORTG&=~(1<<0); #define H31 PORTG|=(1<<0); #define L32 PORTD&=~(1<<0); #define H32 PORTD|=(1<<0); #define L33 PORTB&=~(1<<7); #define H33 PORTB|=(1<<7); #define L34 PORTB&=~(1<<2); #define H34 PORTB|=(1<<2); #define L35 PORTB&=~(1<<0); #define H35 PORTB|=(1<<0); #define L36 PORTB&=~(1<<1); #define H36 PORTB|=(1<<1); #define L37 PORTE&=~(1<<1); #define H37 PORTE|=(1<<1); #define L38 PORTE&=~(1<<7); #define H38 PORTE|=(1<<7); #define L39 PORTC&=~(1<<1); #define H39 PORTC|=(1<<1); #define L40 PORTC&=~(1<<0); #define H40 PORTC|=(1<<0); #define L41 PORTD&=~(1<<7); #define H41 PORTD|=(1<<7); #define L42 PORTD&=~(1<<6); #define H42 PORTD|=(1<<6); #define L43 PORTD&=~(1<<5); #define H43 PORTD|=(1<<5); #define L44 PORTD&=~(1<<4); #define H44 PORTD|=(1<<4); #define L45 PORTD&=~(1<<3); #define H45 PORTD|=(1<<3); #define L46 PORTD&=~(1<<2); #define H46 PORTD|=(1<<2); #define L47 PORTD&=~(1<<1); #define H47 PORTD|=(1<<1); #define L48 PORTG&=~(1<<4); #define H48 PORTG|=(1<<4); #define L49 PORTG&=~(1<<3); #define H49 PORTG|=(1<<3); #define L50 PORTB&=~(1<<6); #define H50 PORTB|=(1<<6); #define L51 PORTB&=~(1<<5); #define H51 PORTB|=(1<<5); #define L52 PORTB&=~(1<<4); #define H52 PORTB|=(1<<4); #define L53 PORTB&=~(1<<3); #define H53 PORTB|=(1<<3); //Начальная настройка при старте програмы. //Выполняется каждый раз, при включении устройства или после сброса. //Гасим все светодиоды на всех портах. void setup() { DDRA |= 0xFF; PORTA = 0xFF; DDRB |= 0xFF; PORTB = 0xFF; DDRC |= 0xFF; PORTC = 0xFF; DDRD |= 0xFF; PORTD = 0xFF; DDRE |= 0xFF; PORTE = 0xFF; DDRF |= 0xFF; PORTF = 0xFF; DDRG |= 0xFF; PORTG = 0xFF; } //Тело программы. //Обычно, организовано в виде бесконечного цикла "петли" (loop). //Эта петля повторяется бесконечно. //Нашими простейшими макросами: //L(номер светодиода) - зажигаем светодиод. //H(номер светодиода) - гасим светодиод. //используем функцию delay(значение в миллисекундах) для организации задержки. void loop() { L1; H12; //Для экономии места, можно писать макросы в одну строчку. delay(10); H1; L2; delay(10); H2; L3; delay(10); H3; L4; delay(10); H4; L5; delay(10); H5; L6; delay(10); H6; L7; delay(10); H7; L8; delay(10); H8; L9; delay(10); H9; L10; delay(10); H10; L11; delay(10); H11; L12; delay(10); H12; L1; delay(10); H1; L2; delay(10); H2; L3; delay(10); H3; L4; delay(10); H4; L5; delay(10); H5; L6; delay(10); H6; L13; delay(10); H13; L14; delay(10); H14; L15; delay(10); H15; L16; delay(10); H16; L17; delay(10); H17; L18; delay(10); H18; L19; delay(10); H19; L20; delay(10); H20; L21; delay(10); H21; L22; delay(10); H22; L23; delay(10); H23; L24; delay(10); H24; L25; delay(10); H25; L8; delay(10); H8; L7; delay(10); H7; L6; delay(10); H6; L13; delay(10); H13; L14; delay(10); H14; L15; delay(10); H15; L16; delay(10); H16; L17; delay(10); H17; L26; delay(10); H26; L27; delay(10); H27; L28; delay(10); H28; L29; delay(10); H29; L30; delay(10); H30; L31; delay(10); H31; L32; delay(10); H32; L33; delay(10); H33; L34; delay(10); H34; L35; delay(10); H35; L36; delay(10); H36; L37; delay(10); H37; L38; delay(10); H38; L21; delay(10); H21; L20; delay(10); H20; L19; delay(10); H19; L18; delay(10); H18; L17; delay(10); H17; L26; delay(10); H26; L27; delay(10); H27; L28; delay(10); H28; L29; delay(10); H29; L30; delay(10); H30; L39; delay(10); H39; L40; delay(10); H40; L41; delay(10); H41; L42; delay(10); H42; L43; delay(10); H43; L44; delay(10); H44; L45; delay(10); H45; L46; delay(10); H46; L47; delay(10); H47; L48; delay(10); H48; L49; delay(10); H49; L50; delay(10); H50; L51; delay(10); H51; L52; delay(10); H52; L53; delay(10); H53; L34; delay(10); H34; L35; delay(10); H35; L36; delay(10); H36; L37; delay(10); H37; L38; delay(10); H38; L21; delay(10); H21; L20; delay(10); H20; L19; delay(10); H19; L18; delay(10); H18; L17; delay(10); H17; L26; delay(10); H26; L27; delay(10); H27; L28; delay(10); H28; L29; delay(10); H29; L30; delay(10); H30; L31; delay(10); H31; L32; delay(10); H32; L33; delay(10); H33; L34; delay(10); H34; L35; delay(10); H35; L36; delay(10); H36; L37; delay(10); H37; L38; delay(10); H38; L21; delay(10); H21; L22; delay(10); H22; L23; delay(10); H23; L24; delay(10); H24; L25; delay(10); H25; L8; delay(10); H8; L7; delay(10); H7; L6; delay(10); H6; L13; delay(10); H13; L14; delay(10); H14; L15; delay(10); H15; L16; delay(10); H16; L17; delay(10); H17; L18; delay(10); H18; L19; delay(10); H19; L20; delay(10); H20; L21; delay(10); H21; L22; delay(10); H22; L23; delay(10); H23; L24; delay(10); H24; L25; delay(10); H25; L8; delay(10); H8; L9; delay(10); H9; L10; delay(10); H10; L11; delay(10); H11; L12; delay(10); }