Arduinoを活用したAtmel AVRのC言語プログラミング入門①LEDを点滅させる(Lチカ)

Arduino

Arduinoを活用したAtmel AVRのC言語プログラミング入門①LEDを点滅させる(Lチカ)

LEDを点滅させてみましょう。まずは記述が簡単なArduino言語で動作させてみます。digitalWrite(pin, value)とpinMode(pin, mode)を使用すると簡単にLEDを点滅できます。

pinMode(pin, mode);
pin: 設定したいピンの番号
mode
出力:OUTPUT
入力:INPUT / 入力+プルアップ:INPUT_PULLUP

digitalWrite(pin, value);
pin: ピン番号
value: HIGH / LOW
//Arduino言語でのプログラミング

void setup()
{
    pinMode(8, OUTPUT);      //8ピンを出力モードに設定
}
 
void loop() 
{
    digitalWrite(8, LOW);    //8ピンをL(5V出力)
    delay(500);              //0.5秒間(500ms)待つ

    digitalWrite(8, HIGH);   //8ピンをH(5V出力)
    delay(500);              //0.5秒間(500ms)待つ
}

先ほどと同じ動作をC言語で記述してみます。「DDRB」と「PORTB」でPBポートの設定を行い「_delay_ms」を使用するとC言語でAVRマイコンを動作させることができます。

        //76543210 ←PBxの設定を表す
DDRB =  0bxxxxxxxx;  
0:入力設定 / 1:出力設定

        //76543210 ←PBxの設定を表す
PORTB = 0bxxxxxxxx;   //PBポートを全ピンL出力
L:0 / H:1
//C言語でのプログラミング
#include<avr/io.h>
#include<util/delay.h>

int main(void)
{
    DDRB =  0b11111111;   //PBポートは全ピン出力設定
    PORTB = 0b00000000;   //PBポートを全ピンL出力

    while(1)
    {           //76543210 bit
        PORTB = 0b00000000;  //PB0ポートをL
        _delay_ms(500);      //PBポートを全ピンL出力
                //76543210 bit
        PORTB = 0b00000001;  //PB0ポートをH
        _delay_ms(500);      //0.5秒(500ms)待つ
    }    
}

ビットセット「_BV」を使用して記述することもできます。

PORTB |= _BV(PBx);  //PBxポートをH

PORTB &= ~_BV(PBx); //PBxポートをL
//C言語でのプログラミング
#include<avr/io.h>
#include<util/delay.h>

int main(void)
{           //76543210 bit
    DDRB =  0b11111111;   //PBポートは全ピン出力設定
    PORTB = 0b00000000;   //PBポートを全ピンL出力

    while(1)
    {
        PORTB &= ~_BV(PB0); //PB0ポートをL
        _delay_ms(500);     //0.5秒(500ms)待つ
        
        PORTB |= _BV(PB0);  //PB0ポートをH
        _delay_ms(500);     //0.5秒(500ms)待つ
    }    
}