kuroの覚え書き

96の個人的覚え書き

arduino LCDとスイッチの練習

#include <LiquidCrystal.h>

// LiquidCrystal display with:
// rs on pin 12
// rw on pin 11
// enable on pin 10
// d4, d5, d6, d7 on pins 5, 4, 3, 2
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);
#define LED 13         //13ピンにはonbooardのLEDが元からつながっている
#define BUTTON 7    //10kΩでプルダウン スイッチオンでHIGHに
int val = 1;
int old_val = 1;
int state = 1;
void setup()
{
  // Print a message to the LCD.
  lcd.begin(2,16);       //2行利用のおまじない
  lcd.clear();
  lcd.print("Hello world");
  lcd.setCursor(0,1);    //改行
  lcd.print("Ready");
  delay(2000);
  lcd.clear();
  pinMode(LED, OUTPUT);
  pinMode(BUTTON, INPUT);
}

void loop()
{
//スイッチの判定
  val = digitalRead(BUTTON);
  if ((val == HIGH) && (old_val == LOW)){
    state = 1 - state;
  }
  old_val = val;

  if (state == 1) {
    digitalWrite(LED,HIGH);
      lcd.print("SWITCH ON");
  } else {
    digitalWrite(LED,LOW);
      lcd.print("SWITCH OFF");
  }
  delay(100);      //LCDチラツキ防止
  lcd.clear();
}


スイッチを押すたびに動作を変えるには

#include <LiquidCrystal.h>

// LiquidCrystal display with:
// rs on pin 12
// rw on pin 11
// enable on pin 10
// d4, d5, d6, d7 on pins 5, 4, 3, 2
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);
#define LED 13
#define BUTTON 7    //10kΩでプルアップ スイッチオンでLOWに
int s=0;

void setup() {
  // Print a message to the LCD.
  lcd.begin(2,16); 
  lcd.clear();
  lcd.print("Welcome");
  delay(2000);
  lcd.clear();
pinMode(LED, OUTPUT);
pinMode(BUTTON, INPUT);
}

void loop() {
  // put your main code here, to run repeatedly:


for(;;) {
  if(digitalRead(BUTTON)==LOW) {
    s=s+1;
    if(s>2)                                               //3回押すと元に戻る
     s=0;
    delay(20);
    while(digitalRead(BUTTON)==LOW) {}    //ボタンが押されている間はなにも起こらず停止
  }
  if (s==0) {                                               //最初は消灯
    digitalWrite(13, LOW);
    lcd.clear();
    lcd.print("off");
    delay(100);
  }
  if (s==1) {                                               //1回押すと点灯
    digitalWrite(13, HIGH);
    lcd.clear();
    lcd.print("on");
    delay(100);

  }
  if (s==2) {                                               //2回押すと点滅
    lcd.clear();
    lcd.print("blink");
    digitalWrite(13, HIGH);
    delay(100);
    digitalWrite(13, LOW);
    delay(100);
  }
}
}