#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); } } }