Lampu merah, Lampu hijau
unknown
c_cpp
10 months ago
4.2 kB
1
Indexable
// Tetapkan pin di mana butang disambungkan #include <TM1637Display.h> const int buttonPin1 = 7; // tetapkan pin butang untuk Pemain 1 sebagai 7 const int buttonPin2 = 2; // tetapkan pin butang untuk Pemain 2 sebagai 2 const int Led = 12; // tetapkan pin LED sebagai 12 long interval = random(2000, 10000); // selang masa di mana LED akan berkelip (dalam milisaat) long previousMillis = 0; // akan menyimpan masa terakhir LED dikemas kini // Pin sambungan modul (Pin Digital) #define CLK1 6 #define DIO1 5 #define CLK2 9 #define DIO2 8 TM1637Display display1(CLK1, DIO1); // untuk paparan skor Pemain 1 TM1637Display display2(CLK2, DIO2); // untuk paparan skor Pemain 2 // Pembolehubah untuk menyimpan keadaan butang int buttonState1 = 0; int buttonState2 = 0; // Pembolehubah untuk mengira bilangan tekan butang int buttonCount1 = 0; int buttonCount2 = 0; int ledstate = 1; // untuk menyatakan sama ada LED menyala atau tidak int x = 0; // untuk menetapkan semula penggunaan millis void setup() { // Tetapkan pin butang sebagai input pinMode(buttonPin1, INPUT_PULLUP); // input butang Pemain 1 display1.setBrightness(0x0f); // tetapkan kecerahan paparan 1 pinMode(buttonPin2, INPUT_PULLUP); // input butang Pemain 2 display2.setBrightness(0x0f); // tetapkan kecerahan paparan 2 pinMode(Led, OUTPUT); // tetapkan LED sebagai output display1.showNumberDec(0, true, 4); // Papar "0000" pada paparan 1 display2.showNumberDec(0, true, 4); // Papar "0000" pada paparan 2 // Mulakan Serial digitalWrite(Led, 1); // nyalakan LED Serial.begin(9600); // mulakan komunikasi serial pada 9600 baud } void loop() { // Baca keadaan butang buttonState1 = digitalRead(buttonPin1); buttonState2 = digitalRead(buttonPin2); // Tetapkan pemasa untuk LED unsigned long currentMillis = millis(); // millis digunakan untuk membaca pemasa tanpa mengganggu proses pengekodan int x = currentMillis - previousMillis; // tetapkan semula x kepada 0 setiap kali LED dimatikan if (x > interval) { previousMillis = currentMillis; // menetapkan semula millis kepada 0; // Jika LED dimatikan, nyalakan dan sebaliknya: if (digitalRead(Led) == LOW) { digitalWrite(Led, HIGH); // nyalakan LED ledstate = 1; // tetapkan keadaan LED sebagai 1 } else { digitalWrite(Led, LOW); // matikan LED ledstate = 0; // tetapkan keadaan LED sebagai 0 } } Serial.println(digitalRead(Led)); // cetak keadaan LED untuk debugging (boleh diabaikan) // Semak jika butang ditekan // Jika ya, keadaan butang adalah LOW if (buttonState1 == LOW && ledstate == 1) { // Tingkatkan kiraan butang buttonCount1++; // Cetak bilangan tekan butang Serial.print("Button 1 was pressed "); Serial.print(buttonCount1); Serial.println(" times"); display1.showNumberDec(buttonCount1, true); // paparkan pada TM1637 } else if (buttonState1 == LOW && ledstate == 0) { // jika butang ditekan semasa LED dimatikan, kiraan akan negatif // Kurangkan kiraan butang buttonCount1--; // Cetak bilangan tekan butang Serial.print("Button 1 was pressed "); Serial.print(buttonCount1); Serial.println(" loss"); display1.showNumberDec(buttonCount1, true); // paparkan pada TM1637 } if (buttonState2 == HIGH && ledstate == 1) { // Tingkatkan kiraan butang buttonCount2++; // Cetak bilangan tekan butang Serial.print("Button 2 was pressed "); Serial.print(buttonCount2); Serial.println(" times"); display2.showNumberDec(buttonCount2, true); // paparkan pada TM1637 } else if (buttonState2 == HIGH && ledstate == 0) { // jika butang ditekan semasa LED dimatikan, kiraan akan negatif // Kurangkan kiraan butang buttonCount2--; // Cetak bilangan tekan butang Serial.print("Button 2 was pressed "); Serial.print(buttonCount2); Serial.println(" loss"); display2.showNumberDec(buttonCount2, true); // paparkan pada TM1637 } if(buttonCount1 == 100){ buttonCount2 = 0; delay(10000); } else if(buttonCount2 == 100){ buttonCount1 = 0; delay(10000); } }
Editor is loading...
Leave a Comment