среда, 27 ноября 2013 г.

Бегущий огонь

Это далеко не первая статья о том, как делать бегущий огонек на arduino. Но она задумывалась как самая простая. Разобраться в схеме с небольшим числом деталей проще. Понять как работает маленькая программа легче. Вообще, изучать что либо предпочтительнее от простого к сложному. Поэтому и была написана эта статья.


Прежде всего схема


На схеме нарисованы ограничительные резисторы в 510 Ом. Но можно взять резисторы от 300 Ом до 1 КОм.

Программа подходящая для любой платки ардуино

////////////////////////
//
// Arduino UNO
//
////////////////////////
//
// Sketch: 8 LED
//

unsigned char n = 0;

void setup()
{
    for (n = 0; n <= 7; n++)
    {
        pinMode(n, OUTPUT);
        digitalWrite(n, LOW);
    }
}

void loop()
{
    for (n = 0; n <= 7; n++)
    {
        digitalWrite(n, HIGH);
        delay(300);
        digitalWrite(n, LOW);
    }
}

//
// End
//
////////////////////////

Программа для ардуино с микроконтроллерами ATmega8, ATmega168 и ATmega328

////////////////////////
//
// Arduino UNO
//
////////////////////////
//
// Sketch: 8 LED
//

// Arduino   ATmega328
//
// D13 --- Port B Pin 5
// D12 --- Port B Pin 4
// D11 --- Port B Pin 3
// D10 --- Port B Pin 2
// D9 --- Port B Pin 1
// D8 --- Port B Pin 0
//
// D7 --- Port D Pin 7
// D6 --- Port D Pin 6
// D5 --- Port D Pin 5
// D4 --- Port D Pin 4
// D3 --- Port D Pin 3
// D2 --- Port D Pin 2
// D1 --- Port D Pin 1
// D0 --- Port D Pin 0
//
// A5 --- Port C Pin 5
// A4 --- Port C Pin 4
// A3 --- Port C Pin 3
// A2 --- Port C Pin 2
// A1 --- Port C Pin 1
// A0 --- Port C Pin 0

unsigned char n = 0;

void setup()
{
    DDRD = 0b11111111;
}

void loop()
{
    for (n = 0; n <= 7; n++)
    {
        PORTD = (1 << n);
        delay(300);
    }
}

//
// End
//
////////////////////////

Всё просто :-)