4.4
int wartoscA5 = 0;
int prog = 0;
boolean wyslano = false;
void setup() {
pinMode(8, OUTPUT);
Serial.begin(9600);
}
void loop() {
wartoscA5 = analogRead(A5);
prog = analogRead(A4);
if (wartoscA5 < prog) {
digitalWrite(8, HIGH);
if (wyslano == false) {
Serial.println(wartoscA5);
wyslano = true;
}
}
else {
digitalWrite(8, LOW);
wyslano = false;
}
delay(100);
}
Da się jakoś bez tworzenia zmiennej "wyslano"?
4.5
// Przypisanie pinów.
#define led_zolta 8
#define led_zielona 7
#define led_czerwona 9
#define przycisk 5
#define pin_odczyt A4
int odczyt = 0; // odczyt z potencjometru
String podana_liczba = 0; // liczba podana przez gracza
int podana_liczba_int = 0; // liczba podana przez gracza przekształcona na zmienną int
byte proby = 2; // ilość prób jakie pozostały do końca gry
boolean od_nowa = true; // czy gramy od nowa, czy kontynuujemy grę
void setup() {
pinMode(przycisk, INPUT_PULLUP);
pinMode(led_czerwona, OUTPUT);
pinMode(led_zielona, OUTPUT);
pinMode(led_zolta, OUTPUT);
Serial.begin(9600);
}
void loop() {
if (od_nowa == true) { // jeśli rozpoczynamy grę lub gramy od nowa
proby = 2;
digitalWrite(led_zielona, LOW);
digitalWrite(led_zolta, LOW);
digitalWrite(led_czerwona, LOW);
while(!Serial) delay(10); // czekamy na otwarcie serial monitora
Serial.println("Przekrec potencjometr i nacisnij przycisk.");
while (digitalRead(przycisk) ==LOW) delay(20); // czekamy na zwolnienie przycisku po wznowieniu gry
while (digitalRead(przycisk) == HIGH) delay(20); // czekamy na wciśnięcie przycisku
odczyt = analogRead(pin_odczyt); // sczytujemy ustawienie potencjometru
Serial.println("Podaj liczbe z zakresu 0 - 1023.");
}
while (Serial.available() == 0); // czekamy na podanie liczby
podana_liczba = Serial.readStringUntil('\n');
podana_liczba_int = podana_liczba.toInt(); // zamieniamy zmienną string na int
if (odczyt - podana_liczba_int <= 50 && odczyt - podana_liczba_int >= -50) { // jeśli podana liczba jest +-50 równa odczytowi
Serial.println("Udalo Ci sie trafic! Brawo.");
digitalWrite(led_zielona, HIGH);
digitalWrite(led_zolta, LOW);
od_nowa = true;
Serial.println("Jesli chcesz zagrac ponownie - nacisnij przycisk.");
while (digitalRead(przycisk) == HIGH) delay(20); // czekamy na naciśnięcie przycisku
}
else { // jeśli podana liczba nie jest +-50 równa odczytowi
if (proby > 0) { // jeśli mamy jeszcze próby
od_nowa = false; // nie rozpoczynamy od nowa
digitalWrite(led_zolta, HIGH);
Serial.print("Nie trafiles. Pozostalo prob: ");
Serial.println(proby);
Serial.println("Podaj kolejna liczbe:");
proby --; // odejmujemy jedną próbę
while(Serial.available() == 0); // czekamy na podanie kolejnej liczby
}
else { // nie mamy już prób
digitalWrite(led_czerwona, HIGH);
digitalWrite(led_zolta, LOW);
Serial.println("Przegrales. Jesli chcesz zagrac ponownie - nacisnij przycisk.");
od_nowa = true; // rozpoczynamy następną grę od nowa
while (digitalRead(przycisk) == HIGH) delay(20); // czekamy na naciśnięcie przycisku
}
}
delay(5);
}
Tu też nie wiem czy optymalnie to napisałem...