Arduino Polska Forum

Pełna wersja: Wysyłanie tekstu
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Witam chce mój problem polega na tym ze chce wysyłać tekst pin2 i pin3 inny tekst w programie poniżej tekst jest wysyłany ale raz  ten a raz drugi a ja chce np. x raz naciśnięty pin2 x wysłany tekst i analogicznie pin 3 co mam zmienić w moim kodzie 



void setup() {
  // put your setup code here, to run once:
pinMode(3, INPUT_PULLUP);
pinMode(2,INPUT_PULLUP);
Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
if(digitalRead(3)==LOW);
else
Serial.println("SIEMA");
while(digitalRead(3)==HIGH);
delay(25);


if(digitalRead(2)==LOW);
else
Serial.println("ELO");
while(digitalRead(2)==HIGH);
delay(25);
}
Poczytaj o funkcji "if". Poznaj co to warunek a co ciało funkcji. W Twoim kodzie brak ciała funkcji. Ponadto trzeba zrobić "zatrzask", aby dopiero po ponownym naciśnięciu przycisku możliwe było wysłanie tekstu. Podpowiem, trzeba użyć dodatkowych zmiennych ustawianych np na HIGH przy naciśnięciu przycisku a na LOW przy puszczeniu i dodać ich do warunku w "if". Trzeba jeszcze opanować programowo drgania styków poczytaj o tym.
Szczerze mówiąc chodziło mi o jakiś konkretny przykład
Najpierw trzeba się nauczyć języka C/C++, a dopiero potem opanowywać przykłady programowania mikroprocesorów.
Można niby to robić jednocześnie, ale szanse na sukces będą znikome.
Odpowiadając na problem: Ten "kod" nie przypomina mi nic co znałem do tej pory.
W jakim języku programujesz?
Poniżej masz przykład:
Kod:
byte p1 = HIGH;
byte p2 = HIGH;

void setup() {

  pinMode(3, INPUT_PULLUP);
  pinMode(2, INPUT_PULLUP);
  Serial.begin(9600);
}

void loop() {

  if (digitalRead(3) == LOW)  //jak naciśniemy przycisk (pin 3)
  { //to dzieje się to co w nawiasie klamrowym, czyli ciało funkcji 1
    delay(20);//opóźnienie na drganie styków może trzeba dobrać
    if (digitalRead(3) == LOW && p1 == HIGH) // jeżeli po odczekaniu 20 milisekund nadal jest LOW i zmienna p1 jest HIGH
    { // to wykonuje się to co jest w nawiasie klamrowym czyli ciało funkcji 2
      p1 = LOW;
      Serial.println("SIEMA");
    } // tu koniec ciała funkcji 2
  } // tu koniec ciała funkcji 1
  if (digitalRead(3) == HIGH)
  {
    p1 = HIGH;
  }


  if (digitalRead(2) == LOW)
  {
    delay(20); //opóźnienie na drganie styków może trzeba dobrać
    if (digitalRead(2) == LOW && p2 == HIGH)
    {
      p2 = LOW;
      Serial.println("ELO");
    }
  }
  if (digitalRead(2) == HIGH)
  {
    p2 = HIGH;
  }
}
Działa?
Dzięki
Generalnie nie zajmuje się tym wcale ale chyba poczytam więcej dzięki wielkie