Skocz do zawartości

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


Pomocna odpowiedź

28 minut temu, Franek100 napisał:

mam nadzieję, że zdjęcie programu pomoże...

Nie, nie pomoże. Niektórzy korzystają z forum na smartfonach gdzie takie zdjęcie jest słabo czytelne (albo wręcz w ogóle nieczytelne). Inni (a parę starszych osób się tu udziela) mają po prostu za słaby wzrok aby gapić się w mało kontrastowe fotografie. Odrzucasz możliwość, że któraś z tych osób Ci pomoże?

A jeśli ktoś będzie chciał wrzucić to sobie na Arduino i sprawdzić, ma sobie przepisywać z ekranu?

Ale wklejony kod już jak najbardziej.

 

 

 

Link do komentarza
Share on other sites

43 minuty temu, Franek100 napisał:

Zatem dlaczego działa z HIGH, a nie z LOW?

Ta pętla powoduje wstrzymanie programu przez cały czas, gdy stan pinu jest HIGH - w skrócie nie będzie ci powtarzało w nieskończoność instrukcji zmiany stanu pinów, tylko wykona się raz i program będzie czekał aż ktoś wciśnie przycisk (warunek pętli przestanie być spełniony).

Link do komentarza
Share on other sites

Cześć, 

super kurs. Bardzo przejrzyście i jasno napisany, a przy tym nie za suto, co zmusza żeby samemu też pogrzebać :)

Próbowałem rozwiązać zadanie 2.5* tak jak było napisane korzystając ze zmiennych pomocniczych pamiętających stan poprzedni, natomiast nie wychodziło to tak jak należy. 

Zrobiłem to trochę po swojemu, ale działa :)

Wygląda to tak:

#define zielona 8
#define czerwona 9

String odebraneDane = "";

void setup() {
 Serial.begin(9600);
 pinMode(zielona, OUTPUT);
 pinMode(czerwona, OUTPUT);

 digitalWrite(zielona, LOW);
 digitalWrite(czerwona, LOW);
}

void loop() {
if(Serial.available() > 0) {


odebraneDane = Serial.readStringUntil('\n');

if (odebraneDane == "zielona" & digitalRead(zielona) == LOW){
  digitalWrite(zielona, HIGH);
  odebraneDane = "";
}


if (odebraneDane == "zielona" & digitalRead(zielona) == HIGH) {
  digitalWrite(zielona, LOW);
  odebraneDane = "";
  }
  

if (odebraneDane == "czerwona" & digitalRead(czerwona) == LOW) {
  digitalWrite(czerwona, HIGH);
  odebraneDane = "";
  }
  

if (odebraneDane == "czerwona" & digitalRead(czerwona) == HIGH) {
  digitalWrite(czerwona, LOW);
  odebraneDane = "";
  }
}

} 

 

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

@Korzon w sumie ciekawe rozwiązanie. Jakoś nie jestem fanem stringów w Arduino, bo jak sam sprawdzałem na dłuższą metę jest to zły pomysł:

To co zrobiłeś jednak jest dodatkową zmienną wiec wszystko ok, tylko w zadaniu chodziło bardziej o zmienną typu int albo bool (który jest intem).

Link do komentarza
Share on other sites

26 minut temu, ethanak napisał:

A 8-bitowy int nie jest intem? 😉

Technicznie rzecz biorąc...

  • nie, bo według specyfikacji języka C "int" musi mieć minimum 16 bitów 😄
  • tak, bo jest to liczba całkowita

Zależy od definicji wyrażenia "int" 😄 

Edytowano przez H1M4W4R1
Link do komentarza
Share on other sites

dostanę adres do pamięci dla b1 i b2. Zakładając ,że adres dla b1 to x to dla b2 będzie x+1. Jeśli startup będzie taki sam to i adresy raczej się nie zmienią. Ale to tak na sucho piszę.

Link do komentarza
Share on other sites

sprawdziłem w cosmic rejestr pod adresem 0x500c PC_ODR o ile dobrze pamiętam. Odniosłem się do piątego bitu w sposób specyficzny dla tego kompilatora. Sprawdziłem adres i pokazuje to samo 0x500c. 

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.