Skocz do zawartości

Vova

Użytkownicy
  • Zawartość

    26
  • Rejestracja

  • Ostatnio

Reputacja

8 Neutralna

O Vova

  • Ranga
    3/10

Ostatnio na profilu byli

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

  1. Zadanie 6.1, tylko zjednym fotorezystorem bo, wiecej nie mam #define przycisk 7 // Pin 7 jako "przycisk" int fRezystor = 0;//Naswietlenie fotorezystora int potencjometr = 0;//Pozycja potencjometru int Przycisk = 0;//Stan przycisku void setup() { Serial.begin(9600);//Nawiazanie komunikacji pinMode(7, INPUT_PULLUP);//Pin "7" jako wejscie } void loop() { fRezystor = analogRead(A1);//Odczytujemy dane z ADC potencjometr = analogRead(A5); if (digitalRead(przycisk) == LOW) {//Kiedy wcisnieto przycisk delay(50);//Opoznienie dla niwelacji drgan swicza Przycisk = Przycisk + 1;//Po kazdym wcisnieciu zwieksz liczbe o "1" Serial.print(" Fotorezystor: " );//Drukuj tekst Serial.print(fRezystor ); Serial.print(", potencjometr: "); Serial.print(potencjometr ); Serial.print(", przycisk wcisnieto "); Serial.print(Przycisk ); Serial.print(" razy "); } while (digitalRead(7) == LOW) {} //Czekamy na wcisniecie przycisku }
  2. Zadanie 5.5 #include <Servo.h>//Biblioteka odpowiedzialna za serwo int potencjometr = 0;//Pozycja potencjometra Servo silnik;//Serwo void setup(){ silnik.attach(9);//Konfiguracja pinu 9 pod serwo } void loop() { potencjometr = analogRead(A1);// Odczyt pozycji potencjometru z ADC potencjometr = map(potencjometr, 0, 1023, 1 , 180);// Przekrztaucenie odczytanych wartosci silnik.write(potencjometr);// Wykonaj ruch serwa delay(50);//Male opoznienie dla niwelacji zaklucen }
  3. Zadanie 5.4 #include <Servo.h> //Biblioteka odpowiedzialna za serwa String ZadanaPozycja = "";//Zminna dla wprowadzenia tekstu int pozycja = 0;//Poczatkowa pozycja serwa int ZadanaPozycjaINT = 0;//Zmienna dla przekrztałcenia z "String" na "int" Servo serwomechanizm; //Tworzymy objekt, dzieki ktoremu mozemy odwolac sie do serwa void setup() { Serial.begin(9600);// Nawiazanie komunikacji serwomechanizm.attach(9);//Serwomechanizm podlaczony do pinu 9 } void loop() { if (Serial.available() > 0) { //Odczytywanie zadanej pozycji ZadanaPozycja = Serial.readStringUntil('\n'); ZadanaPozycjaINT = ZadanaPozycja.toInt();//Przekrztałcenie zniennej z "String" na "int" if (ZadanaPozycjaINT <= 180 && ZadanaPozycjaINT >= 0) {//Gdy zadana pozycja miesci sie w zakresie serwomechanizm.write(ZadanaPozycjaINT);//Wykonaj ruch serwa } else { Serial.println("Zadana nie wlasciwa pozycja");// Gdy zadana pozycja poza zakresem wyswietl info } } }
  4. @krzym2 Witam. Pracuje nad zadaniem 5.2 i natknąłem się na Twoją wersje. Tylko dziwne że po skopiowaniu u mnie nawet nie chce się kompilować? zastanawiam się jak to działa u Ciebie? Na pierwszy rzut oka w kodze jest o jedną klamrę za dużo na końcu, a jednej linijce brakuje ( ; )
  5. @BananWszyscy @ethanak Diękuję za naprowadzenie na błedy. Oto nowy kod zadania 4.5 #define przycisk 7 #define zielona 8 #define pomaranczowa 9 #define czerwona 10 int pozycja = 0;//Pozycja potencjometru odczytana z ADC int gra = 3;// Ilosc zsans String liczba = ""; // Drukuj tekst w "" int liczba_int = 0; // Konwersacja liczby void setup() { Serial.begin(9600);//Nawiazanie komunikacji pinMode(7, INPUT_PULLUP); //Konfiguracja wyjsc pinMode(8, OUTPUT); pinMode(9, OUTPUT); pinMode(10, OUTPUT); pinMode(A5, INPUT); } void loop() { if (digitalRead(przycisk) == LOW) { //Gdy przycisk wcisniety delay(200);//Opoznienie pozycja = analogRead(A5); //Sprawdzamy pozycje potencjometra Serial.println("PODAJ LICZBE");//Drukuj tekst digitalWrite(zielona, LOW); //Diody nie swieca digitalWrite(pomaranczowa, LOW); digitalWrite(czerwona, LOW); delay(200);//Opoznienie } if (Serial.available() > 0) { //Gdy wpisano liczbe liczba = Serial.readStringUntil('\n'); liczba_int = liczba.toInt();//Konwersacja tekstu pozycja = analogRead(A5); //Sprawdzamy pozycje potencjometra if (liczba_int - pozycja <= 50 && liczba_int - pozycja >= -50) { //Gdy odczytane wartosci misccza sie w zakresie digitalWrite(zielona, HIGH); //Wlaczamy diode zelona delay(2000);//Opoznienie digitalWrite(zielona, LOW);//Wylaczamy diode Serial.println("Pozstalo " + String (gra) + " szanse ");//Drukuj tekst delay(100);//Opoznienie } else { digitalWrite(czerwona, HIGH); //Wlacza sie dioda czerwona delay(2000);//Opoznienie digitalWrite(czerwona, LOW); //Wylacza sie dioda czerwona gra = gra - 1;//O jedna szansa mniej delay(100);//Opoznienie Serial.println("Pozstalo " + String (gra) + " szanse ");//Drukuj tekst } while (Serial.available() > 0) {} // Oczekiwanie na wpisanie liczby if (gra < 2) { //Gdy zostala 1 szansa digitalWrite(pomaranczowa, HIGH);//Wlacz dide pomaranczowa delay(1000);//Opoznienie digitalWrite(pomaranczowa, LOW);//Wylacz diode pomaranczowa } while (Serial.available() > 0) {}// Oczekiwaine na wpisanie liczby } if (gra < 1) { //Gdy wyczerpano wszystkie szanse digitalWrite(pomaranczowa, HIGH);//Wlacz diode pomaranczowa i czerwona digitalWrite(czerwona, HIGH); Serial.println("Koniec gry, wcisnij przycisk");//Drukuj tekst while (digitalRead(przycisk) == HIGH) {}//Czekaj na wcisniecie przycisku gra = 3; } }
  6. #define przycisk 7 #define zielona 8 #define pomaranczowa 9 #define czerwona 10 int pozycja = 0;//Pozycja potencjometru odczytana z ADC int gra = 3;// Ilosc mozliwosci String liczba = ""; // Drukuj tekst w "" int liczba_int = 0; // Konwersacja liczby void setup() { Serial.begin(9600);//Nawiazanie komunikacji pinMode(7, INPUT_PULLUP); //Konfiguracja wyjsc pinMode(8, OUTPUT); pinMode(9, OUTPUT); pinMode(10, OUTPUT); pinMode(A5, INPUT); } void loop() { if (digitalRead(przycisk) == LOW) { //Gdy przycisk wcisniety pozycja = analogRead(A5); //Sprawdzamy pozycje potencjometra Serial.println("PODAJ LICZBE");//Drukuj tekst digitalWrite(zielona, LOW); //Diody nie swieca digitalWrite(pomaranczowa, LOW); digitalWrite(czerwona, LOW); delay(200);//Opoznienie Serial.println(pozycja);//Drukuj pozycjre potencjometra } if (Serial.available() > 0) { //Gdy wpisano liczbe liczba = Serial.readStringUntil('\n'); liczba_int = liczba.toInt();//Konwersacja tekstu pozycja = analogRead(A5); //Sprawdzamy pozycje potencjometra if (liczba_int - pozycja <= 50 && liczba_int - pozycja >= -50) { //Gdy odczytane wartosci misccza sie w zakresie digitalWrite(zielona, HIGH); //Wlaczamy diode zelona delay(2000);//Opoznienie digitalWrite(zielona, LOW); gra = gra - 1; //O jedna mozliwosc mniej Serial.println("pozstalo" + String (gra) + " prob ");//Drukuj tekst }else{ digitalWrite(czerwona, HIGH); //Wlacza sie dioda czerwona gra = gra - 1; //O jedna mozliwosc mniej delay(2000);//Opoznienie digitalWrite(czerwona, LOW); //Wylacza sie dioda czerwona Serial.println("pozstalo" + String (gra) + " prob ");//Drukuj tekst }else if (gra = 1) {//Gdy zostala 1 mozliwosc digitalWrite(pomaranczowa, HIGH);//Wlacz dide pomaranczowa Serial.println("pozstalo" + String (gra) + " prob ");//Drukuj tekst delay(1000);//Opoznienie digitalWrite(pomaranczowa, LOW);//Wylacz diode pomaranczowa }else if (gra = 0) {//Gdy wyczerpano wszystkie mozliwosci digitalWrite(pomaranczowa, HIGH);//Wlacz diode pomaranczowa i czerwona digitalWrite(czerwona, HIGH); Serial.println("Koniec gry, wcisnij przycisk");//Drukuj tekst while (digitalRead(przycisk) == HIGH) {//czekaj na wcisniecie przycisku delay(25); } } } } Witam. Pomóżcie znaleźć problem. Nie kompiluje mi się powyższy kod . Podświetlony jest pierwszy else if i wyskakuje błąd exit status 1 expected '}' before 'else'.
  7. Poprawiona wersja 4.4. Musiałem podejrzeć na forum inne rozwiązania, bo miałem problem z ciągłym wyświetlaniem wartości odczytanych, kiedy dioda świeciła. Myślałem że i tutaj zadziała "pusta pętla" do oczekiwania na włączenie diody... int odczytanaWartosc = 0; //Zmienna do przechowywania odczytu ADC int prog = 0; //Próg włączenia światła - ustawiany potencjometrem float napiecie = 0;// Warotsc przeliczona na napiecie void setup() { Serial.begin(9600); pinMode(8, OUTPUT); //Konfiguracja wyjść pod diodę LED } void loop() { odczytanaWartosc = analogRead(A5);//Odczytanie wartości z ADC prog = analogRead(A4);//Odczytanie wartości z ADC if (odczytanaWartosc < prog) { //Czy jest ciemniej od ustawionego progu? digitalWrite(8, HIGH);//Włączenie diody napiecie = analogRead(A5);//Odczytanie wartosci napiecie = napiecie * (5.0 / 1024.0); //Przeliczenie wartości na napięcie Serial.println(napiecie);//Wysyłamy zmierzone napięcie while (odczytanaWartosc < prog) {//Zatrzymujemy sie w petli aby wysłac zmierzone napiecie tylko raz odczytanaWartosc = analogRead(A5);//Odczytanie wartości z ADC prog = analogRead(A4);//Odczytanie wartości z ADC delay(50);//Opóźnienie } } else { digitalWrite(8, LOW);//Wyłączenie diody } delay(50);//Opóźnienie }
  8. Zadanie 4.4 Może być? int odczytanaWartosc = 0;//Zmienna do przechowania odczytu z ADC int prog = 0;//Próg włączenia światła - ustawiany potencjometrem float napiecie = 0;//Wartość przeliczona na napiecie void setup() { Serial.begin(9600);//Uruchomienie komunikacji przez USART pinMode(8, OUTPUT); //Konfiguracja wyjść pod diode LED if (8,HIGH) {//Gdy dioda swieci napiecie = analogRead(A5);//Odczytujemy wartosc napięcia napiecie = napiecie * (5.0/1024.0);//Przeliczenie wartosci odczytanej w napiecie Serial.println(napiecie);//Wysyłamy zmierzone napiecie } } void loop() { odczytanaWartosc = analogRead(A5);//Odczytane wartośći z ADC prog = analogRead(A4);//Odczytanie wartości z ADC if (odczytanaWartosc < prog) {//Czy jest ciemniej od ustawionego progu? digitalWrite(8, HIGH);// Włączenie diody } else { digitalWrite(8, LOW); //Wyłączenie diody } delay(50); }
  9. Witam. Tak trochę odbiegając od tematu może ktoś podpowie. Mam następujący problem, ja pisząc jakiś program używam liter np."ś" , "ć" samoczynnie wyskakuje mi okienko zapisywania zmian i od razu następuje sprawdzanie kodu. Jes to dość irytujące a ja nie wiem gdzie szukać rozwiązania sytuacji (może jakieś ustawienia)? Miał kto podobny problem?
  10. @ethanak Zrobione. Jak sprawdzałem działanie kodu z poprzedniego postu , to raz włączyłem i raz wyłączyłem diodę i zadziałało. Więc pomyślałem że jest ok. A trzeba było jeszcze raz spróbować włączyć... #define dioda 8 String odebraneDane = ""; // Pusty ciąg odebranych danych boolean stanDiody = false; // Przypisanie zielonej stanu void setup() { Serial.begin(9600); // Uruchomienie komunikacji pinMode(dioda, OUTPUT); // Konfiguracja wyjścia digitalWrite(dioda, LOW); //Dioda w stanie niskim } void loop() { if (Serial.available() > 0) { // Czy Arduino odebrało dane //Jeśli tak, odczytujemy je doznaku końca linii i zapisz w zmiennej odebraneDane odebraneDane = Serial.readStringUntil('\n'); if (odebraneDane == "dioda") { //Gdy wpisane "dioda" if (stanDiody == false) { // Gdy zmienna w stanie niskim digitalWrite(dioda, HIGH); // Właczamy diodę stanDiody = true;// Zmienna przechodzi w stan wysoki } else { digitalWrite(dioda, LOW); // Wyłączamy diodę stanDiody = false;//Zmienna przechodzi w stan niski } } } }
  11. @ethanak Wychodzi na to że w poprzednich próbach za mocno utrudniałem sobie życie, w ty sensie że kod okazał się dużo prostszy niż zakładałem. Co do formatowania, to nie wiem może to kwestia przeglądarki czy innego czynnika , ale jak dla mnie różnica jest nie wielka między 1 a 2 wersją #define dioda 8 String odebraneDane = ""; // Pusty ciąg odebranych danych boolean stanDiody = false; // Przypisanie zielonej stanu void setup() { Serial.begin(9600); // Uruchomienie komunikacji pinMode(dioda, OUTPUT); // Konfiguracja wyjścia digitalWrite(dioda, LOW); //Dioda w stanie niskim } void loop() { if (Serial.available() > 0) { // Czy Arduino odebrało dane //Jeśli tak, odczytujemy je doznaku końca linii i zapisz w zmiennej odebraneDane odebraneDane = Serial.readStringUntil('\n'); if (odebraneDane == "dioda") { //Gdy wpisane "dioda" if (stanDiody == false) { // Gdy zmienna w stanie niskim digitalWrite(dioda, HIGH); // Właczamy diodę stanDiody = true;// Zmienna przechodzi w stan niski } else { digitalWrite(dioda, LOW); // Wyłączamy diodę } } } }
  12. @ethanak Faktycznie ta linijka kody z gwiazdkami nie potrzebna. Jakoś myślałem że bez tego ten drugi IF nie będzie działać... Skorzystałem z automatycznego formatowania i tak to wyszło: #define dioda 8 String odebraneDane = ""; // Pusty ciąg odebranych danych boolean stanDiody = false; // Przypisanie zielonej stanu void setup() { Serial.begin(9600); // Uruchomienie komunikacji pinMode(dioda, OUTPUT); // Konfiguracja wyjścia digitalWrite(dioda, LOW); //Dioda w stanie niskim } void loop() { if (Serial.available() > 0) { // Czy Arduino odebrało dane //Jeśli tak, odczytujemy je doznaku końca linii i zapisz w zmiennej odebraneDane odebraneDane = Serial.readStringUntil('\n'); if (odebraneDane == "dioda") { //Gdy wpisane "dioda" if (stanDiody == false) { // Gdy zmienna w stanie niskim digitalWrite(dioda, HIGH); // Właczamy diodę stanDiody = true; // Zmienna przechodzi w stan wysoki } else if (stanDiody == true) { // Gdy zmienna w stanie wysokim digitalWrite(dioda, LOW); // Wyłączamy diodę stanDiody = false; // Zmienna przechodzi w stan niski } } } }
  13. #define dioda 8 String odebraneDane = ""; // Pusty ciąg odebranych danych boolean stanDiody = false; // Przypisanie zielonej stanu void setup() { Serial.begin(9600); // Uruchomienie komunikacji pinMode(dioda,OUTPUT); // Konfiguracja wyjścia digitalWrite(dioda, LOW); //Dioda w stanie niskim } void loop() { if(Serial.available() > 0) { // Czy Arduino odebrało dane //Jeśli tak, odczytujemy je doznaku końca linii i zapisz w zmiennej odebraneDane odebraneDane = Serial.readStringUntil('\n'); if (odebraneDane == "dioda") { //Gdy wpisane "dioda" if (stanDiody == false){ // Gdy zmienna w stanie niskim digitalWrite(dioda,HIGH); // Właczamy diodę stanDiody = true; // Zmienna przechodzi w stan wysoki }else if (odebraneDane =="dioda") {//Gdy wpisane słowo "dioda" if (stanDiody == true) {// Gdy zmienna w stanie wysokim digitalWrite(dioda,LOW); // Wyłączamy diodę stanDiody = false; // Zmienna przechodzi w stan niski } } } } } @ethanak @Treker Witam ponownie. Może być taki rozwiązanie zadania 2.5*
  14. @Treker @ethanak Dziękuje za odpowiedzi i cierpliwość. Chyba faktycznie powinienem wrócić do pierwszej lekcji kursu.
  15. Jak patrze na rozwiązania innych z wykorzystaniem np. " ! " zastanawiam się skąd oni to biorą , przecież nie było ani słowa o tym. Mam nadzieje że ta(3) część kursu jest najtrudniejsza i najbardziej nie wyjaśniona (jak z tym boolean), i jak już ruszę dalej to będzie to dla takich naprawdę bardzo początkujących ( czytać kompletnie zielonych) w programowaniu... @ethanak czy chodziło o to żeby zmienić z "dioda" na "stanDiody" w drugim if-ie? void setup() { Serial.begin(9600); // Uruchomienie komunikacji pinMode(dioda,OUTPUT); // Konfiguracja wyjścia digitalWrite(dioda, LOW); //Dioda w stanie niskim } void loop() { if(Serial.available() > 0) { // Czy Arduino odebrało dane //Jeśli tak, odczytujemy je doznaku końca linii i zapisz w zmiennej odebraneDane odebraneDane = Serial.readStringUntil('\n'); if (odebraneDane == "dioda") { //Jeśli wpisane "dioda" digitalWrite(dioda, true); //Wlączamy diode boolean stanDiody = true; // Przypisujemy stan diody wysoki } if (stanDiody == true){ //Jeżeeli stan diody wysoki digitalWrite(dioda, false); //Wylączamy diode boolean stanDiody = false; // Przypisujemy stan diody niski } } } Chyba jestem najbardziej topornym uczniem. Jakoś nie potrafię przebrnąć przez ten 3 rozdział Czas na zajęcia mam dopiero po 21.00, siedzę do 1.30, wstaje o 5.00 i ni jak...
×
×
  • Utwórz nowe...