Skocz do zawartości

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


Pomocna odpowiedź

31 minut temu, ethanak napisał:

Jeśli to Serial Monitor z Arduino IDE to nie, nie ma takiej możliwości ani za pomocą wbudowanej funkcji, ani własnej.

Czyli, że jakakolwiek informacja  o tym co znajduje się na "konsoli", cokolwiek przez to rozumiem, nie  jest zapisywana  w pamięci arduino?

2 minuty temu, honotu napisał:

Czyli, że jakakolwiek informacja  o tym co znajduje się na "konsoli", cokolwiek przez to rozumiem, nie  jest zapisywana  w pamięci arduino?

Dokładnie tak.

  • Pomogłeś! 1
(edytowany)

Przyznam się  szczerze , że nie posiadam arduino  realnie  i bawie się  nim tylko wirtualnie  przy pomocy symulatora   arduino udostępnionego w darmowym programie  "tinkerCad". Ale, że zbliżają się święta to  licze na   to, że  św. mikołaj   uwzględni    moje potrzeby  w trakcie rozwożenia  prezentów szczególnie, że prawie przez cały rok byłem grzeczny.

A tak na poważnie to chciałem sobie zasymulować dziewięcioklawiszową  klawiaturę (taką jak w "starych  telefonach" z klawiaturą🤔)  zbudowaną z oporników i przycisków połączonych z jednym pinem  oraz   napisać program  do jej obsługi. 

12 minut temu, ethanak napisał:

Dokładnie tak.

hmmm🤨

Jestem kompletnym dyletantem i  ignorantem jeżeli chodzi o  programowanie ale tak sobie myślę, że   co do  samej kwestii zapamiętywania   przez arduino   tego co samo wypisuje to  dałoby się   je  przekonać do  pamietania tylko    to chyba akurat   nie zmieni sytuacji  na kosnoli

Edytowano przez honotu
8 minut temu, honotu napisał:

dziewięcioklawiszową  klawiaturę (taką jak w "starych  telefonach" z klawiaturą🤔

Ona ma 12 klawiszy a nie 9 🙂

Nie bardzo wiem po co kasowanie informacji na konsoli przy tego typu programie, ale pewnie da się to w jakiś sposób obejść. Przykładowo: jeśli chcesz mieć na konsoli ładnie narysowaną klawiaturę z zaznaczeniem który klawisz jest wciśnięty - możesz po prostu po każdym wciśnięciu/puszczeniu klawisza rysować ponownie całą klawiaturę (i parę pustych linii przed nią, aby poprzednia zginęła z ekranu).

15 minut temu, honotu napisał:

 co do  samej kwestii zapamiętywania   przez arduino   tego co samo wypisuje to  dałoby się   je  przekonać do  pamietania tylko    to chyba akurat   nie zmieni sytuacji  na kosnoli

I znów masz absolutną rację 🙂

 

  • Lubię! 1
(edytowany)

Ja to jednak jestem zarabisty.

Szkoda, że św. Mikołaj o tym nie wie.

Jakbyście go spotkali to mu szepnijcie słówko o mnie.

Dziękuję  za   wyjaśnienie wiekszej ilości   spraw niż   przewidziane   w moim pytaniu.

Jesteście zarąbiści👍

Edytowano przez honotu
  • 4 tygodnie później...

KURS ARDUINO #3 - u mnie po wykonaniu tego zadania ,,Interakcja z układem - sterowanie diodami przez UART'' niestety nic nie zadziałało... Może ktoś pomoże? Nawet po skopiowaniu programu od autora nic się nie zmieniło 😞

#define ledRed 10
#define ledGreen 9
bool Red = false;
bool Green = false;

String recievedData = " " ;

void setup() {
  Serial.begin(9600); // Uruchomienie komunikacji

  pinMode(ledRed, OUTPUT);
  pinMode(ledGreen, OUTPUT);

  //digitalWrite(ledRed, LOW);
  //digitalWrite(ledGreen, LOW);
  
}

void loop() {
  if(Serial.available() > 0) { //Jeżeli Arduino odebrało dane
    recievedData = Serial.readStringUntil('\n'); //Jeżeli tak, to odczytaj dane do końca linii.
    if(recievedData == "lightRed"){ // Jeżeli odebrane dane to String "lightRed"
    
    if(Red == false){
      Red = true;
    }
    else if(Red == true){
      Red = false;
    }
    if(Red == true){
      digitalWrite(ledRed, HIGH);
    }
    else if(Red == false){
      digitalWrite(ledRed, LOW);
    }
    }
    if(recievedData == "lightGreen") { // Jeżeli Arduino odebrało String "lightGreen"
   if(Green == false){
      Green = true;
    }
    else if(Green == true){
      Green = false;
    }
    if(Green == true){
      digitalWrite(ledGreen, HIGH);
    }
    else if(Green == false){
      digitalWrite(ledGreen, LOW);
    }      
    }
    
    
  }

}

 

(edytowany)
#define zolta 8
#define zielona 9
boolean zolta=false;
boolean zielona=false;
String dane="";
void setup() {
  Serial.begin(9600);
  pinMode(zolta,OUTPUT);
  pinMode(zielona,OUTPUT);
  digitalWrite(zolta,LOW);
  digitalWrite(zielona,LOW);
  
}

void loop() {
  if(Serial.available()>0){
    dane=Serial.readStringUntil('\n');

    if (dane=="zielona" && boolean zielona=false) {
      digitalWrite(zielona,HIGH);
      boolean zielona=true;
    }
    if (dane=="zielona" && boolean zielona=true) {
      digitalWrite(zielona,LOW);
      boolean zielona=false;
    }
    if (dane=="zolta" && boolean zolta=false) {
      digitalWrite(zolta,HIGH);
      boolean zolta=true
    }
    if (dane=="zolta" && boolean zolta=true) {
      digitalWrite(zolta,LOW);
      boolean zolta=false
    }
    if(dane != "zielona" && dane !="zolta")
   {
     Serial.println("wpisales zla nazwe");
  }
  }
}

Mam pytanie odnośnie kodu który wykonałem do zadania 2.5. Co jest nie tak? Błąd w załączniku (aplikacja zaznacza linijkę pierwszą)image.thumb.png.d4b7327d8b7a53f825cae6fb2fa1b37e.png

Edytowano przez ProPizza41
poprawki

@ProPizza41 witam na forum 🙂 Po pierwsze zjadłeś minimum 2 średniki, a po drugie coś "nakręciłeś" z warunkami i zmiennymi w środku. Na razie tyle podpowiedzi - spróbuj dam i daj znać jak poszło 😉

  • Lubię! 1

Nieco zmieniłem kod, lecz nadal nie działa a błąd ten sam 😕. Zastanawiam się czy na pewno dobrze rozumiem zmienną boolean 🤔.

#define zolta 8
#define zielona 9
boolean zolta =false;
boolean zielona =false;
String dane="";


void setup() {
  Serial.begin(9600);
  pinMode(zolta,OUTPUT);
  pinMode(zielona,OUTPUT);
  digitalWrite(zolta,LOW);
  digitalWrite(zielona,LOW);
  
}

void loop() {
  if(Serial.available()>0){
    dane=Serial.readStringUntil('\n');

    if (dane=="zielona") {
      if (boolean zielona =false){
        digitalWrite(zielona,HIGH);
        boolean zielona =true;
      }
      else {
        digitalWrite (zielona,LOW);
        boolean zielona =false; 
      }
    }
    if (dane=="zolta") {
      if (boolean zolta =false){
        digitalWrite(zolta,HIGH);
        boolean zolta =true;
    }
      else {
        digitalWrite(zolta,LOW);
        boolean zolta =false;
      }
    }
    if(dane != "zielona" && dane !="zolta")
   {
     Serial.println("co ty mi tu wogole podajesz");
  }
  }
}

 

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...