#include <SPI.h>
#include <Wire.h>
#include <Adafruit_SH110X.h>
#include <Adafruit_GFX.h>
#define BUZZER_PIN 13
#define SCREEN_WIDTH 128 // pixel ความกว้าง
#define SCREEN_HEIGHT 64 //
#define OLED_RESET -1 //ขา reset เป็น -1 ถ้าใช้ร่วมกับขา Arduino reset
Adafruit_SH1106G OLED(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
const int ledPin = 13;
int Hour=0;
int Minute=0;
int Sec=0;
int Hour2=0;
int Minute2=0;
int Sec2=0;
int Step=0;
const int analogInPin = A1;
int sensorValue = 0;
void setup()
{ pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, HIGH);
#define BUZZER_PIN 13
Serial.begin(9600);
if (!OLED.begin())
{ // Use default I2C address 0x3C
Serial.println("OLED allocation failed");
} else {
Serial.println("OLED initialized");
}
oled1();
delay(1000);
ok(); oled();
}
void loop()
{
sensorValue = analogRead(analogInPin);
Serial.print("sensor = ");
Serial.println(sensorValue);
if(Step<6)
{
if(sensorValue<=0)//ซ้าย
{
if(Step==0&&Hour>10)
{
Hour=Hour-10;
}
else if(Step==1&&Minute>10)
{
Minute=Minute-10;
}
else if(Step==2&&Sec>10)
{
Sec=Sec-10;
}
else if(Step==3&&Hour2>10)
{
Hour2=Hour2-10;
}
else if(Step==4&&Minute2>10)
{
Minute2=Minute2-10;
}
else if(Step==5&&Sec2>10)
{
Sec2=Sec2-10;
}
BZ(); oled();
}
//////////////////////////////////////////////////////
else if(sensorValue<200)//บน
{
if(Step==0&&Hour<20)
{
Hour=Hour+10;
}
else if(Step==1&&Minute<60)
{
Minute=Minute+10;
}
else if(Step==2&&Sec<60)
{
Sec=Sec+10;
}
else if(Step==3&&Hour2<23)
{
Hour2=Hour2+10;
}
else if(Step==4&&Minute2<60)
{
Minute2=Minute2+10;
}
else if(Step==5&&Sec2<60)
{
Sec2=Sec2+10;
}
BZ(); oled();
}
/////////////////////////////////////////////
else if(sensorValue<400)//ล่าง
{
if(Step==0)
{
Hour-10;
}
else if(Step==1)
{
Minute-10;
}
else if(Step==2)
{
Sec-10;
}
else if(Step==3)
{
Hour2-10;
}
else if(Step==4)
{
Minute2-10;
}
else if(Step==5)
{
Sec2-10;
}
BZ(); oled();
}
else if(sensorValue<600)//ขวา
{
if(Step==0)
{
Hour++;
}
else if(Step==1)
{
Minute++;
}
else if(Step==2)
{
Sec++;
}
else if(Step==3)
{
Hour2++;
}
else if(Step==4)
{
Minute2++;
}
else if(Step==5)
{
Sec2++;
}
BZ(); oled();
}
else if(sensorValue<800)//ok
{
Step++;
hl(); oled();
}
}
////////////////////////////////////////////
if(Step==6)
{
if(Sec==60)
{
Sec=0;
Minute++;
}
else if(Minute==60)
{
Minute=0;
Hour++;
}
else if(Hour==24)
{
Hour=0;
}
else
{
Sec++;
}
oled();
if(Hour==Hour2&&Minute==Minute2&&Sec==Sec2)
{
ok();digitalWrite(ledPin, LOW); ////สั่งมอเตอร์ทำงาน
}
if(Hour==Hour2&&Minute==Minute2+15&&Sec==Sec2)
{
ok();digitalWrite(ledPin, HIGH); ////สั่งมอเตอร์หยุดทำงาน
}
}
}
void oled()
{
OLED.clearDisplay(); // ลบภาพในหน้าจอทั้งหมด
OLED.setTextColor(SH110X_WHITE); //กำหนดข้อความสีขาว
OLED.setCursor(0, 0); // กำหนดตำแหน่ง x,y ที่จะแสดงผล
OLED.setTextSize(2); // กำหนดขนาดตัวอักษร
OLED.println("T"); // แสดงผลข้อความ
OLED.setCursor(20,0);
OLED.print(Hour); // แสดงผลข้อความ
OLED.setCursor(40,0);
OLED.print(":"); // แสดงผลข้อความ
OLED.print(Minute); // แสดงผลข้อความ
OLED.setCursor(80,0);
OLED.print(":"); // แสดงผลข้อความ
OLED.print(Sec); // แสดงผลข้อความ
OLED.setCursor(0, 24); // กำหนดตำแหน่ง x,y ที่จะแสดงผล
OLED.println("S"); // แสดงผลข้อความ
OLED.setCursor(20,24);
OLED.print(Hour2); // แสดงผลข้อความ
OLED.setCursor(40,24);
OLED.print(":"); // แสดงผลข้อความ
OLED.print(Minute2); // แสดงผลข้อความ
OLED.setCursor(80,24);
OLED.print(":"); // แสดงผลข้อความ
OLED.print(Sec2); // แสดงผลข้อความ
OLED.setTextSize(1);
OLED.setCursor(0,55);
OLED.print("Smart robotic "); // แสดงผลข้อความ
OLED.println(Step);
/////////////////////////////////////////////////////////
if(Step==0)
{ OLED.setTextSize(2);
OLED.setCursor(25,4);
OLED.println("_");
}
else if(Step==1)
{ OLED.setTextSize(2);
OLED.setCursor(50,4);
OLED.println("_");
}
else if(Step==2)
{ OLED.setTextSize(2);
OLED.setCursor(90,4);
OLED.println("_");
}
else if(Step==3)
{ OLED.setTextSize(2);
OLED.setCursor(25,25);
OLED.println("_");
}
else if(Step==4)
{ OLED.setTextSize(2);
OLED.setCursor(50,25);
OLED.println("_");
}
else if(Step==5)
{ OLED.setTextSize(2);
OLED.setCursor(90,25);
OLED.println("_");
}
else if(Step==6)
{ OLED.setTextSize(1);
OLED.setCursor(0,45);
OLED.print("RUN "); // แสดงผลข้อความ
}
OLED.display(); // สั่งให้จอแสดงผล
delay(1000);
}
void oled1()
{
OLED.clearDisplay(); // ลบภาพในหน้าจอทั้งหมด
OLED.setTextColor(SH110X_WHITE); //กำหนดข้อความสีขาว
OLED.setCursor(0, 0); // กำหนดตำแหน่ง x,y ที่จะแสดงผล
OLED.setTextSize(2); // กำหนดขนาดตัวอักษร
OLED.setCursor(0,20);
OLED.println("Smart"); // แสดงผลข้อความ
OLED.println("robotic"); // แสดงผลข้อความ
OLED.display(); // สั่งให้จอแสดงผล
delay(1000);
}
void BZ()
{
tone(BUZZER_PIN, 1000, 200);
delay(200);
}
void hl()
{
tone(BUZZER_PIN, 800, 200);
delay(200);
tone(BUZZER_PIN, 800, 200);
delay(200);
}
void ok()
{
tone(BUZZER_PIN, 1000, 500);
delay(200);
tone(BUZZER_PIN, 500, 800);
delay(200);
}