Mam problem z (chyba) samą aplikacją Arduino piszę chyba ponieważ podczas sprawdzania programu przez przypadek kliknąłem coś (chyba) w narzędziach i teraz gdy gdy dostaję odp od Arduino pokazują mi się kwadraty itp. jak na zdj. co zrobić? Próbowałem reinstalować aplikacje wraz ze sterownikami USB, ale to nic nie daje. Co dziwne dzieje się tak tylko w jednej części kodu tej przy której pracowałem.
#define Fan 3
#define trigPin 12
#define echoPin 11
String inf;
bool L1 = false;
int predkosc;
int predkosci;
int infx;
bool wyb;
void setup()
{
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(Fan, OUTPUT);
Serial.begin(9600); //Baudrate: 9600
Serial.println("Program zresetowany");
}
void loop() {
if (Serial.available() > 0) { //Czy Arduino odebrano dane
inf = Serial.readStringUntil('\n');
infx = inf.toInt();
} switch (infx) {
case 1: //Prędkość silnika pierwszego
wyb = false;
S1();
infx = 0;
break;
case 2: // lampka
L();
break;
case 3: //proporcjonalnie odlegos do predkosci wiatraczka
if (wyb == true) {
predkosc = ODL();
predkosci = map(predkosc, 0, 250, 100, 255);
analogWrite(3, predkosci);
//Serial.println("psl " + predkosci);
wyb = true;
delay(1000);
} else if (wyb == false) {
wyb = true;
} break;
default:
infx = 0;
} if (wyb == true) {
infx = 3;
}
}
void S1() { //Sterowanie wiatraczkiem
String Obr;
String Obr2;
int Obr1;
int x = 0;
//Serial.println("S1"); testy
while (x != 1) {
//Serial.println("petla"); testowanie
if (Serial.available() > 0) {
Obr = Serial.readStringUntil('\n');
x = 1;
}
}
if (Obr != Obr2) {
Serial.println("ps1 " + Obr);
}
Obr1 = Obr.toInt();
//Serial.println(Obr1); testowanie
analogWrite(3, Obr1);
Obr = Obr2;
x = 0;
}
void L() { // funkcja lamki on/off
if (L1 == false) {
digitalWrite(8, HIGH);
Serial.println("L1 ON");
L1 = true;
}
else if (L1 == true) {
digitalWrite(8, LOW);
Serial.println("L1 OFF");
L1 = false;
}
}
int ODL() { //odl do szybkosci proprocjonalnie
int a = 0;
long czas, dystans;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
czas = pulseIn(echoPin, HIGH);
dystans = czas / 58;
if (dystans <= 250) {
a = dystans;
Serial.println("cm "+dystans);
return a;
}
}
Problem występuje w case 3. Wiem, że można lepiej to napisać ale to jeden z pierwszych programów jaki piszę.