wami

わみめも

NefryやSofmoといった開発者向けボードを作ったり、AndroidやFlutterアプリ作ったり、Webで遊んでみたり、手当たり次第になんでもやっちゃう人のサイト

Arduino勉強会資料

Arduino勉強会資料

wami

ArduinoIDEをダウンロードする

https://www.arduino.cc/

こちらからダウンロードしましょう

早速Lチカしてみよう

ハードウエア入門しよう


// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin 13 as an output.
  pinMode(13, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);              // wait for a second
}


LEDを繋いでみよう

向きを間違えないように!

本当はちゃんと抵抗を入れましょう。 LED 制限抵抗 で検索!

プログラムの解説 setup

起動したときやリセットを押した時に一度だけ呼び出されるのが**setup()**の内容


// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin 13 as an output.
  pinMode(13, OUTPUT);
}

プログラムの解説 loop

電源が入ってる時に何度も呼び出されるのが**loop()**の内容


// the loop function runs over and over again forever
void loop() {
  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);              // wait for a second
}

プログラムの解説 digitalWrite

digitalWrite関数は、ピンの出力をHIGH or LOWに変更することができます。

digitalWrite(13, HIGH);

delay関数は、次のコードまで待つことができます。時間の単位はミリ秒です。 1000ミリ秒=1秒

delay(1000); 

pinMode関数は、そのピンを入力ピンか出力ピンに指定することができます。

pinMode(13, OUTPUT); 

for文を使ってみよう!

for文とは何度か繰り返したい処理をするプログラムを作成する時に便利なものです!

for(int i=1;i<=5;i++){繰り返したい処理}

for(初期値;継続条件;繰り返すたびに変化させたい値){繰り返したい処理}

ほかにもwhile文やdo~while文などが繰り返しさせることができます。

プログラム

実際に試してみようと思います。

for(初期値;継続条件;繰り返すたびに変化させたい値){繰り返したい処理}

リセットしたときにLEDを20回点滅させるプログラム

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin 13 as an output.
  pinMode(13, OUTPUT);
  for (int i = 1; i <= 20; i++) {
    digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
    delay(100);              // wait for a second
    digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
    delay(100);
  }
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);              // wait for a second
}

if文を使ってみよう!

if文とは、Arduinoに指定した条件になったときだけある処理をしたいといった分岐したいときに使うものです。

if(条件式){実行したいもの}

プログラムはif文やfor文などの組み合わせでできています。 言語が違うもののスマホのアプリなども同じようにしてできています。

プログラム

スイッチが押されたときだけLEDが点滅するものをつくってみよう


// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin 13 as an output.
  pinMode(13, OUTPUT);
  pinMode(8, INPUT_PULLUP);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(100);              // wait for a second
  if (digitalRead(8) == LOW) {
    digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
    delay(100);              // wait for a second
  }
}

サーボを動かしてみる

サーボとは角度を指定して回すことができるモータです。 線にそれぞれ意味があるのでArduinoと接続を間違えないように!

プログラム

ArduinoIDEにプログラムを書いてみましょう


#include <Servo.h> 
 
Servo myservo;  // create servo object to control a servo 
                // twelve servo objects can be created on most boards
 
int pos = 0;    // variable to store the servo position 
 
void setup() 
{ 
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object 
} 
 
void loop() 
{ 
  for(pos = 0; pos <= 180; pos += 1) // goes from 0 degrees to 180 degrees 
  {                                  // in steps of 1 degree 
    myservo.write(pos);              // tell servo to go to position in variable 'pos' 
    delay(15);                       // waits 15ms for the servo to reach the position 
  } 
  for(pos = 180; pos>=0; pos-=1)     // goes from 180 degrees to 0 degrees 
  {                                
    myservo.write(pos);              // tell servo to go to position in variable 'pos' 
    delay(15);                       // waits 15ms for the servo to reach the position 
  } 
} 


RGBLEDを動かしてみよう!

前もって、ライブラリをインストールしておきましょう!

プログラム

#include <Adafruit_NeoPixel.h>

// RGBLEDに出力するピン番号
#define RGBLED_OUTPIN    2
// Arduinoにぶら下がっているRGBLEDの個数
#define NUMRGBLED        1

// RGBLEDのライブラリを生成する(色指定はRGBの並びで行う、LEDの速度は800KHzとする)
Adafruit_NeoPixel RGBLED = Adafruit_NeoPixel(NUMRGBLED, RGBLED_OUTPIN, NEO_RGB + NEO_KHZ800);

void setup()
{
     RGBLED.begin() ;                   // RGBLEDのライブラリを初期化する
     RGBLED.setBrightness(50) ;         // 明るさの指定(0-255)を行う
     RGBLED.setPixelColor(0, 0,150,0) ; // 適度に明るい緑の色。(R=0,G=150,B=0)
     RGBLED.show() ;                    // LEDにデータを送り出す
}
void loop()
{

}
comments powered by Disqus

最近の投稿

カテゴリー

About

NefryやSofmoといった開発者向けボードを作ったり、AndroidやFlutterアプリ作ったり、Webで遊んでみたり、手当たり次第になんでもやっちゃう人
やってること
・ IoTデバイスNefryシリーズの開発、販売
・ 基板やファームを含むハードウエアやWeb、Androidアプリの受託開発
・ 専門学校やハンズオンなどの講師
・「同人ハードウェアmeetup」 #dhwmu や名古屋版IoTLTなどイベントの主催