Ta strona używa ciasteczek (plików cookies), dzięki którym może działać lepiej. Dowiedz się więcejRozumiem i akceptuję
Ważna
informacja!
Pisanie postów i komentowanie jest już włączone! W przypadku problemów z działaniem forum/bloga proszę o kontakt na adres web@forbot.pl lub na forum w odpowiednim temacie.

Kurs Arduino - #3 - UART (komunikacja z PC), zmienne

Autor Wiadomość
Rutusowiec 



Posty: 11
Wysłany: 31-01-2017, 14:46   

marek1707 dzięki za wyjasnienie
temat z czasem (miganiem) był poruszany w pierwszych ćwiczeniach :)
pozdrawiam

Postaw piwo autorowi tego posta
 
 
Kalisto 



Posty: 2
Wysłany: 07-02-2017, 22:01   

Widzę że temat jeszcze żyje, więc dołączę się z nietypowym pytaniem, jak w arduino zrobić parsowanie danych z bluetootha, mam apkę w tel która wysyła przez bt dane w jakimś tam formacie i teraz jak z tego wyciągnąć liczby do sterowania robotem (np pwm silników albo impulsy do serwa?) a może gdzieś to jest opisane na formum, jeśli tak to proszę o info gdzie szukać? Dziękuję serdecznie za każdą podpowiedź.

Postaw piwo autorowi tego posta
 
 
Treker 




Posty: 7648
Pomógł: 114 razy
Otrzymał 493 piw(a)
Skąd: Gdynia
Programuję w:
C, Arduino
Moje roboty:
Spectrum, Fuzzy

Wysłany: 16-02-2017, 16:36   

Kalisto, wszystko zależy od tego jak wysyłasz dane ;) Jeśli chodzi Ci o sam sposób zamiany string na int, to tutaj wystarczy funkcja toInt(), więcej informacji w dokumentacji Arduino: https://www.arduino.cc/en/Reference/StringToInt


Zachęcam do korzystania z forum - nie pomagam indywidualnie przez PW/maila.
Sprawdź » Kurs ARDUINOKurs podstaw elektronikiZbuduj swojego robota - kurs!
Postaw piwo autorowi tego posta
 
 
Niff 



Posty: 2
Wysłany: 26-02-2017, 18:26   

Witam.
Super kurs!

Potrzebowałbym pomocy fachowców.
Po wgraniu tego programu:
Kod programu: Zaznacz cały

void setup(){
  Serial.begin(9600); //Uruchamiamy transmisję
 
  pinMode(8, OUTPUT); //Wyjście diody czerwonej
  pinMode(9, OUTPUT); //Wyjście diody zielonej
  pinMode(10, INPUT_PULLUP); //Przycisk
 
  digitalWrite(8, LOW); //Wyłączenie obu diod
  digitalWrite(9, LOW);
}
 
void loop() {
  if (digitalRead(10) == LOW) { //Jeśli przycisk jest wciśnięty
    digitalWrite(9, HIGH); //Włączenie diody zielonej
    digitalWrite(8, LOW); //Wyłączenie diody czerwonej
  } else { //Jeśli przycisk nie jest wciśnięty
    digitalWrite(9, LOW); //Wyłączenie diody zielonej
    digitalWrite(8, HIGH); //Włączenie diody czerwonej
    Serial.println("Uwaga! Alarm! Okno nie jest zamkniete!");
  }
}


nie moge już wgrać żadnego innego programu z kursu.
W Monitorze cały czas nadawana jest informacja o alarmie.
Jak wgrywam jakikolwiek program z kursu wywala błąd .


Arduino UNO R3 programuje za pomocą telefonu i ArduinoDroid.
Jak dotąd nie miałem żadnych problemów.
Pozdrawiam

__________
Komentarz dodany przez: Treker
Kod programu, dla lepszej czytelności, należy umieszczać w tagach [code]. Proszę to poprawić.
Kod programu: Zaznacz cały

Ostatnio zmieniony przez Niff 27-02-2017, 13:47, w całości zmieniany 1 raz  
Postaw piwo autorowi tego posta
 
 
Treker 




Posty: 7648
Pomógł: 114 razy
Otrzymał 493 piw(a)
Skąd: Gdynia
Programuję w:
C, Arduino
Moje roboty:
Spectrum, Fuzzy

Wysłany: 27-02-2017, 10:24   

Niff, witam na forum :) Na przyszłość pamiętaj, aby kody programów umieszczać zawsze w tagach [code].

Niestety nie korzystałem z tego środowiska, więc ciężko powiedzieć, co się dzieje. Najprawdopodobniej nie potrafi ono wywołać resetu Arduino w odpowiednim momencie (tak jak dzieje się to podczas normalnego programowania). Najlepiej byłoby zacząć programować z PC... Jeśli nie masz takiej możliwości, to są dwa wyjścia:
1) Spróbuj trzymać wciśnięty przycisk, który jest podłączony do pinu 10. Wtedy Arduino nie będzie wysyłało ciągle komunikatu i może uda się zaprogramować układ. Rozwiązanie to zadziała jednak tylko i wyłącznie dla tego programu, który wkleiłeś.
2) Druga opcja: tuż przed rozpoczęciem wgrywania programu wciśnij reset na płytce Arduino.


Zachęcam do korzystania z forum - nie pomagam indywidualnie przez PW/maila.
Sprawdź » Kurs ARDUINOKurs podstaw elektronikiZbuduj swojego robota - kurs!
Postaw piwo autorowi tego posta
 
 
Więcej szczegółów
Wystawiono 1 piw(a):
Niff
Niff 



Posty: 2
Wysłany: 27-02-2017, 13:53   

Treker dziękuje za pomoc. Przytrzymanie przycisku pomogło. Wracam do nauki :-)
Pozdrawiam.

Postaw piwo autorowi tego posta
 
 
kozolex 



Posty: 1
Skąd: Olsztyn
Wysłany: 29-03-2017, 09:10   

Kosmetyka ale na rysunku przycisk jest nieprawidłowo wpięty w płytkę prototypową.
Dla mnie to żaden problem w końcu od czegoś mam miernik.
Podsyłam poprawioną grafikę.

Postaw piwo autorowi tego posta
 
 
Treker 




Posty: 7648
Pomógł: 114 razy
Otrzymał 493 piw(a)
Skąd: Gdynia
Programuję w:
C, Arduino
Moje roboty:
Spectrum, Fuzzy

Wysłany: 29-03-2017, 15:54   

kozolex, faktycznie w niektórych miejscach jest taki błąd - jednak z tego co pamiętam w zestawach i tak są przyciski, które mają tylko dwa wyprowadzenia, więc nie powinno być problemów. Rysunki będą wymienione przy okazji odświeżania tego kursu :)


Zachęcam do korzystania z forum - nie pomagam indywidualnie przez PW/maila.
Sprawdź » Kurs ARDUINOKurs podstaw elektronikiZbuduj swojego robota - kurs!
Postaw piwo autorowi tego posta
 
 
dejmieno 



Posty: 32
Otrzymał 2 piw(a)
Programuję w:
Java, C
Wysłany: 25-05-2017, 13:59   

Co do zadania domowego z gwiazdką to chyba zamiast tworzenia zmiennych globalnych bool można po prostu zrobić:

if (digitalRead(8) == 0) digitalWrite(8, HIGH);
else digitalWrite(8, LOW);

I trochę pamięci zaoszczędzone, zresztą zauważyłem, że zmienne globalne zabierają dużo miejsca w swoim programie mam zajęte 12%. Chociaż to akurat pewnie wina struktury 'String'.

Ciekawe jest to, że mam ustawiony pin 8 na OUTPUT a nadal mogę z niego sczytać wartość.

Postaw piwo autorowi tego posta
 
 
Więcej szczegółów
Wystawiono 1 piw(a):
Treker
sebastian_sl 



Posty: 2
Wysłany: 22-07-2017, 14:27   

W przypadku "czujnika"
otwarcia okna można było zastosować jedną zmienną globalną, dzięki czemu
informacja wyświetli się tylko raz na każdą zmianę stanu.

Kod trochę słabo sformatowany
- zwykle używam "wygodnych" IDE, które same poprawiają :oops:
Kod programu: Zaznacz cały

bool last_high = false;
void setup()
{
  pinMode(2,INPUT_PULLUP);
  pinMode(3,OUTPUT);
  pinMode(4,OUTPUT);
  digitalWrite(3,LOW);
  digitalWrite(4,LOW);
  Serial.begin(9600);
}
 
void loop()
{

 
  if(digitalRead(2) == HIGH)
  {
    digitalWrite(3,HIGH);
    digitalWrite(4,LOW);
    if(!last_high)
    {
      Serial.println("zamkniete!");
      last_high = true;
    }
  }
  else
  {
    digitalWrite(4,HIGH);
    digitalWrite(3,LOW);   
    if(last_high)
    {
      Serial.println("Otwarte!");
      last_high = false;
    }
  }
}

Postaw piwo autorowi tego posta
 
 
Treker 




Posty: 7648
Pomógł: 114 razy
Otrzymał 493 piw(a)
Skąd: Gdynia
Programuję w:
C, Arduino
Moje roboty:
Spectrum, Fuzzy

Wysłany: 22-07-2017, 21:38   

sebastian_sl, witam na forum :) Oczywiście, zagadnienie to można rozwiązać na wiele różnych sposób :)


Zachęcam do korzystania z forum - nie pomagam indywidualnie przez PW/maila.
Sprawdź » Kurs ARDUINOKurs podstaw elektronikiZbuduj swojego robota - kurs!
Postaw piwo autorowi tego posta
 
 
Michal_78 



Posty: 1
Wysłany: 12-08-2017, 15:21   Rozwiązanie do zdania 2.4*

Kod programu: Zaznacz cały

#define zielona 8
#define czerwona 9
 
String odebraneDane = ""; //Pusty ciąg odebranych danych
boolean stanczerwonej = false;
boolean stanzielonej = false;
 
 
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 odebrano dane
    //Jeśli tak, to odczytujemy je do znaku końca linii i zapisz w zmiennej odebraneDane
    odebraneDane = Serial.readStringUntil('\n');
   
    if (odebraneDane == "zielona") {     
      digitalWrite(zielona, stanzielonej);
      stanzielonej =! stanzielonej;
      }
     
    if (odebraneDane == "czerwona") {
      digitalWrite(czerwona, stanczerwonej);
      stanczerwonej =! stanczerwonej;
      }
     
    if (odebraneDane != "czerwona") {
      if (odebraneDane != "zielona"){

      Serial.println("Nie ma takiego koloru ! ");
    }}
  }
}
!

Postaw piwo autorowi tego posta
 
 
Treker 




Posty: 7648
Pomógł: 114 razy
Otrzymał 493 piw(a)
Skąd: Gdynia
Programuję w:
C, Arduino
Moje roboty:
Spectrum, Fuzzy

Wysłany: 16-08-2017, 09:17   

Michal_78, witam na forum :) Wszystko wygląda dobrze, jeśli miałbym się tylko do czegoś "przyczepić", to zmieniłbym zapis:
Kod programu: Zaznacz cały
stanzielonej =! stanzielonej;

Na:
Kod programu: Zaznacz cały
stanzielonej = !stanzielonej;

Tak, chodzi o jedną spację, która wiele nie wnosi, ale widać wtedy, że "!" neguje zmienną, a nie jest częścią operatora przypisania, co może być czasami mylące z operatorem "różne", czyli "!=" :)


Zachęcam do korzystania z forum - nie pomagam indywidualnie przez PW/maila.
Sprawdź » Kurs ARDUINOKurs podstaw elektronikiZbuduj swojego robota - kurs!
Postaw piwo autorowi tego posta
 
 
Elvis 



Posty: 1198
Pomógł: 85 razy
Otrzymał 221 piw(a)
Skąd: wawa
Programuję w:
C, asm

Wysłany: 16-08-2017, 09:43   

Jak już szukamy czego się przyczepić, to proponowałbym dodać kilka instrukcji else do programu.
Jeśli pierwszy warunek jest prawdziwy:
Kod programu: Zaznacz cały
 if (odebraneDane == "zielona") {

To nie ma sensu sprawdzać kolejnych - odebrane dane nie mogą już zawierać napisu "czerwona". Używanie else daje nieco efektywniejszy kod, ale co ważniejsze w przyszłości może uchronić przed dość złośliwymi błędami, gdy niechcący więcej niż jeden warunek jest jednocześnie spełniony.

Postaw piwo autorowi tego posta
 
 
Więcej szczegółów
Wystawiono 1 piw(a):
Treker
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Wersja do druku

Skocz do:  

Nie rozwiązałeś swojego problemu? Zobacz podobne tematy: Kurs Arduino - #9 - ... Kurs Arduino - #8 - ... Kurs STM32 - #3 - Pł... Kurs STM32 - #2 - Po...
lub przeszukaj forum po wybranych tagach: artykulow, do, komentarze


Powered by phpBB modified by Przemo © 2003 phpBB Group
Popularne kursy: Arduinopodstawy elektroniki