Lampu merah, Lampu hijau
unknown
c_cpp
a year ago
4.2 kB
4
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