Skocz do zawartości

Screwdriv

Użytkownicy
  • Zawartość

    13
  • Rejestracja

  • Ostatnio

Reputacja

1 Neutralna

O Screwdriv

  • Ranga
    2/10

Ostatnio na profilu byli

Blok z ostatnio odwiedzającymi jest wyłączony i nie jest wyświetlany innym użytkownikom.

  1. Wypadałoby zacząć od przeczytania tego https://www.arduino.cc/reference/en/
  2. void loop() { Serial.println("Ustaw potencjometr i wciśnij przycisk"); // drukujesz komunikat ok odczytanaWartosc = analogRead(A5); // odczytujesz wartość z potencjometru po co? Serial.println(odczytanaWartosc); // drukujesz jego warość po co? No chyba że chwilowo do testów while (odczytanaWartosc >= 0) // dopóki warunek jest prawdziwy (odczytana wartość jest większa/równa 0 ??) taki warunek jest zawsze spełniony i co on niby ci daje?? { // to wykonuje się pętla delay(25); // czekaj 25 while (digitalRead(11) == LOW) // kiedy przycisk wciśnięty { Serial.println("Podaj liczbe od 20 do 1023:"); // drukuj Podaj liczbę... while (Serial.available() == 0) // kiedy nic nie wpisałeś w terminalu... { delay(25); // czekaj 25 while (proby < 3) { na pewno tak to miało wyglądać?
  3. @radekwrc A jakbyś tak na kartce sobie rozpisał po kolei co chcesz żeby program robił... i później porównał to z tym co napisałeś... np. start programu--> drukujemy "przekręć potencjometr i naciśnij przycisk-->teraz wypadałoby czekać na naciśnięcie przycisku...itd
  4. while (Serial.available() == 0) { delay(25); while (proby < 3) { delay(25); } {<----- ta klamra to od czego? liczbastring = Serial.readStringUntil('\n'); liczba = liczbastring.toInt(); Serial.println(liczba); wydaje się że masz zdecydowanie za dużo wstawionych nawiasów... przez to ciężko nawet stwierdzić co i gdzie się ma wykonać
  5. [code] #define zielona 9 #define czerwona 8 String odebraneDane = ""; //Pusty ciąg odebranych danych int kolor = 0; void setup() { Serial.begin(9600); //Uruchomienie komunikacji pinMode(zielona, OUTPUT); //Konfiguracja wyjść pinMode(czerwona, OUTPUT); digitalWrite(zielona, LOW); //Wyłączamy diody digitalWrite(czerwona, LOW); } void loop() { if (Serial.available() > 0) { //Czy Arduino odebrało dane odebraneDane = Serial.readStringUntil('\n'); //Jeśli tak, to odczytujemy i zapisujemy w zmiennej odebraneDane } if (odebraneDane != "zielona" && odebraneDane != "czerwona" && odebraneDane != 0) { //Jeśli wprowadzone dane są niewłaściwe kolor = 3; //Ustaw zmienną na 3 } else if (odebraneDane == "zielona") { // Jeśli wprowadzono "zielona" kolor = 1; // Ustaw zmienną kolor na 1 } else if (odebraneDane == "czerwona") { // Jeśli wprowadzono "czerwona" kolor = 2; // Ustaw zmienną kolor na 2 } switch (kolor) { case 1: //Jeśli odebrano słowo "zielona" digitalWrite(zielona, HIGH); //To włączamy diodę zieloną delay(1000); digitalWrite(zielona, LOW); // wyłączamy diodę zieloną odebraneDane = ""; //"reset" zmiennej kolor = 0; //"reset" zmiennej break; case 2: //Jeśli odebrano słowo "czerwona" digitalWrite(czerwona, HIGH); //To włączamy diodę czerwoną delay(1000); digitalWrite(czerwona, LOW); // wyłączamy diodę czerwoną kolor = 0; //"reset" zmiennej odebraneDane = ""; //"reset" zmiennej break; case 3: Serial.println("Wprowadź poprawne dane: 'zielona' lub 'czerwona'"); // Wypisz komunikat kolor = 0; //"reset" zmiennej odebraneDane = ""; //"reset" zmiennej break; } } [/code] 6.2 W końcu poprawiłem...
  6. Wrzuciłem jego program na gołe ardunio i też miałem około 3 V wiadomo że nie sztywno. A jestem pewny że moje jeszcze działa
  7. no i dobrze pokazuje. na wyjściu ma 3 V a że nic nie jest podpięte to i się nic nie zmienia.
  8. #define zielona 8 #define czerwona 9 String odebraneDane = ""; //Pusty ciąg odebranych danych int kolor = 0; void setup() { Serial.begin(9600); //Uruchomienie komunikacji pinMode(zielona, OUTPUT); //Konfiguracja wyjść pinMode(czerwona, OUTPUT); digitalWrite(zielona, LOW); //Wyłączamy diody digitalWrite(czerwona, LOW); } void loop() { if (Serial.available() > 0) { //Czy Arduino odebrało dane //Jeśli tak, to odczytujemy i zapisujemy w zmiennej odebraneDane odebraneDane = Serial.readStringUntil('\n'); } if (odebraneDane == "zielona") { kolor = 1; } else if (odebraneDane == "czerwona") { kolor = 2; } else { kolor = 0; } switch (kolor) { case 1: //Jeśli odebrano słowo "zielona" digitalWrite(zielona, HIGH); //To włączamy diodę zieloną delay(1000); digitalWrite(zielona, LOW); break; case 2: //Jeśli odebrano słowo "czerwona" digitalWrite(czerwona, HIGH); //To włączamy diodę czerwoną delay(1000); digitalWrite(czerwona, LOW); break; case 0: Serial.println("Wprowadzono błędne dane. Wpisz 'zielona' lub 'czerwona'"); break; } } hymm zrobiłem podobnie ale nie działa mi to tak jak powinno, dioda powinna zgasnąć a świeci się cały czas, w przypadku błędnego wprowadzenia danych wyświetla się komunikat ale się też zapętla i cały czas wysyła to samo przecież jest break więc powinien wyjść z pętli...
  9. Zadanie 5.4 #include <Servo.h> String odebrane = ""; // przechowuje odczytane dane Servo serwomech; int pozycja = 0; // pozycja serwomechanizmu void setup() { Serial.begin(9600); // prędkość łącza serwomech.attach(9); // serwo na pin 9 } void loop() { Serial.println(" Podaj liczbę od 0 - 180"); //komunikat wysłany do konsoli while (Serial.available() == 0) { //czekaj na wprowadzenie liczb delay(50); } if (Serial.available() > 0) { // jesli dane wprowadzone to... odebrane = Serial.readStringUntil('\n'); // odebrane dane pozycja = odebrane.toInt(); // konwertowane do Int if (pozycja <= 180) { // sprawdzenie czy liczba mieści się w zakresie serwomech.write(pozycja); // przekazanie pozycji dla serwomechanizmu } else { Serial.println("Liczba nie mieści się w zadanym zakresie"); // komunikat o przekroczeniu zakresu } } } Zadanie 5.5 #include <Servo.h> Servo serwomech; int pozycja = 0; // pozycja serwomechanizmu int odebrane = 0; // zmienna przechowująca dane z ADC void setup() { serwomech.attach(9); // serwo na pin 9 } void loop() { odebrane = analogRead(A5); // odczytanie wartości napięcia z ADC odebrane = map(odebrane, 0, 1023, 0, 180); // przeskalowanie danych if (odebrane <= 180) { // sprawdzenie zakresu serwomech.write(odebrane); // ustawienie pozycji serwomechanizmu } }
  10. Rany ale mnie pokarało za kopiowanie zmiennych.... bawiłęm się zadaniem 4.6... i ustawienia diód w "ifach" kopiowałem do kolejnych.... kable zmieniałem, wyjścia, diody a tu dalej nie świeci jak trzeba albo nie gaśnie...przecież stan jest dobrze wpisany.... a zmienna wszędzie ta sama
  11. z przyzwyczajenia dzięki. idę dłubać dalej.
  12. Smaruje zadanie 4.5 nie jest skończone, nie czepiać się nierównych nawiasów chciałem sprawdzić czy nie ma błędów i skompilować to co nabazgrałem. i wywala mi expected primary-expression before '=' token przy #define przycisk = 11 o co chodzi?? przecież w tym miejscu jest wszystko ok.. #define czer = 8 #define pom = 9 #define ziel = 10 #define przycisk = 11 int wartosc = 0; String odebrane = ""; bool send = false; void setup() { Serial.begin(9600); pinMode(czer, OUTPUT); pinMode(pom, OUTPUT); pinMode(ziel, OUTPUT); pinMode(przycisk, INPUT_PULLUP); } void loop() { wartosc = analogRead(A5); if (digitalRead(przycisk) == LOW){ Serial.println("Podaj liczbe:"); delay(1000); if(Serial.available()>0) { odebrane = Serial.readStringUntil('\n'); } } }
  13. 1.1 Dla mnie granica to jakieś 11 ms. przy 10 już nie widziałem migania, a 12 jeszcze dość wyraźnie.
×
×
  • Utwórz nowe...