//////////////////////////////////////////////////////////////////////////////
///// Name : Sittinon
///// Proposition : LED dice circuit
//////////////////////////////////////////////////////////////////////////////
void setup() {
for (int i = 2; i <= 18; i++){ // loop i start 2 => i = 18
pinMode(i, OUTPUT); // กำหนด i ให้ส่งสัญญาณOutput
}
Serial.begin(115200); // เรียกใช้ port Serial ด้วยความเร็ว 115200 bit/s
randomSeed(analogRead(A0)); // กำหนดSeedให้ใช้ฟังก์ชันRandom
pinMode(21, INPUT_PULLUP); // กำหนดModeของ21 ให้เป็น Input-pullup (มีค่าเริ่มต้นเป็น 1 )
}
void displayNumber(int number){
digitalWrite(5, number > 1 ? HIGH : LOW); // กำหนด pinGPIO5 เป็น high เมื่อ number มีค่า > 1
digitalWrite(17, number > 3 ? HIGH : LOW); // กำหนด pinGPIO17 เป็น high เมื่อ number มีค่า > 3
digitalWrite(16, number == 6 ? HIGH : LOW); // กำหนด pinGPIO16 เป็น high เมื่อ number มีค่า = 6
digitalWrite(4, number % 2 == 1 ? HIGH : LOW); // กำหนด pinGPIO4 เป็น high เมื่อ number ÷ 2 แล้วเหลือเศษ 1
digitalWrite(18, number == 6 ? HIGH : LOW); // กำหนด pinGPIO18 เป็น high เมื่อ number มีค่า = 6
digitalWrite(2, number > 3 ? HIGH : LOW); // กำหนด pinGPIO2 เป็น high เมื่อ numeber มีค่า > 3
digitalWrite(15, number > 1 ? HIGH : LOW); // กำหนด pinGPIO15 เป็น high เมื่อ number มีค่า > 1
}
bool firstTime = true; // ประกาศตัวแปล firstTime ชนิด bool ค่าเริ่มต้นเป็น true
void loop() {
while (digitalRead(21) == HIGH){ // ทำงานเมื่อ pin21 = high
}
if (firstTime) { // ทำงานเมื่อ firstTime เป็น true
Serial.println(micros()); // พิมพ์ค่าของ micros ไปยัง Serial Monitor
randomSeed(micros()); // random ค่า micros
firstTime = false; // เปลี่ยนค่า firstTime เป็น false เพื่อหยุดการ random
}
for (int i = 0; i < 18; i++) { // loop i start 0 => i = 18
int num = random(1, 7); // random number 1 to 6
displayNumber(num); // เรียกใช้ function displayNumber
Serial.println(num); // create number to Serial Monitor
delay(50 + 20 * i); // หน่วยเวลาในการแสดงผลLED (millisecond)
}
}