14
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Arduinoでいろいろ始めたい人が知っておいた方がいい、いろいろなこと

Last updated at Posted at 2015-07-27

友人と一緒にArduinoで遊んだ時のメモです。LEDの使い方、Serial通信のことをまとめておきます。

LEDの電流制限抵抗の求め方

R = \frac{(V_{cc}-V_f)}{I_f}

VfはLEDの逆起電力、Vccは電源電圧、IfはLEDの定格電流としました。
また、例えばフルカラーLEDなどで、素子の輝度[mcd]がRGBで異なる場合、このように補正すると良いです。

R = \frac{(V_{cc}-V_f)}{I_f\frac{l_0}{l}}

lは対象の素子の輝度、l0は基準の素子の輝度です。

Serial通信で複数の信号を送りたいとき 

3つのデータを送りたいときは、Processing側で4つデータを送信する。最後の一つをダミーとして(0とか)、Arduino側で4つのデータを受信する。Serial.available()は読み込もうとしているデータのたまっている数を返す。

import controlP5.*;
import processing.serial.*;
Serial myPort;
ControlP5 red,green,blue;
int Red = 100;
int Green = 100;
int Blue = 100;

void setup() {
  
  //change the port name to yours.
  myPort = new Serial(this,"YOUR_PORT_NAME",9600);
  
  size(600,600);
  setupSliders();
}

void draw() {
  myPort.write(Red);
  myPort.write(Green);
  myPort.write(Blue);
  myPort.write(0);
  background(Red,Green,Blue);
}

void setupSliders(){
  red = new ControlP5(this);
  green = new ControlP5(this);
  blue = new ControlP5(this);
    red.addSlider("Red")
  .setPosition(100,50)
  .setRange(0,255)
  .setSize(150,50);
    green.addSlider("Green")
  .setPosition(100,150)
  .setRange(0,255)
  .setSize(150,50);
    blue.addSlider("Blue")
  .setPosition(100,250)
  .setRange(0,255)
  .setSize(150,50);
}
//Pin assignment.
int red = 9;
int green = 10;
int blue = 11;

//PWM brightness 0 to 255
int Red = 0;
int Blue = 0;
int Green = 0;

// the setup routine runs once when you press reset.
void setup() {
  // declare pin 9 to be an output:
  pinMode(red, OUTPUT);
  pinMode(green, OUTPUT);
  pinMode(blue, OUTPUT);
  Serial.begin(9600);
}

// the loop routine runs over and over again forever.
void loop() {

  //if bunch of data sent from Processing is stacked for over 3...
  if(Serial.available()>3){
    Red = Serial.read();
    Green = Serial.read();
    Blue = Serial.read();
    Serial.read();        //the last data is dummy
  }
  //write data
  analogWrite(green, Green);
  analogWrite(red, Red);
  analogWrite(blue,Blue);

}

IoTっぽいことをやってみたい。

Arduinoとネットを繋ぐ良いサンプルとして、Arduino Networked Lampが有名です。

14
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?