Skocz do zawartości

Kurs Arduino - #2 - podstawy programowania, porty I/O


Komentator

Pomocna odpowiedź

43 minuty temu, Belferek napisał:

Przyjrzyj się swojemu programowi. On nie wyłącza diod w tym samym czasie. Najpierw wyłącza diodę nr 1, a "za chwilę" diodę nr 2 :-).

Rzeczywiście, @Belferek masz rację! Rozumiem o co Ci chodzi. Niepotrzebnie użyłem wyrażenia "w tym samym czasie". Dzięki za spostrzeżenie 👍

  • Lubię! 1
Link do komentarza
Share on other sites

hej mam pytanie. wyskakuje błąd, chociaż, według mnie, wszystko zostało dobrze zapisane. 

void setup(){
  Serial.begin(9600);
Serial.println("Witaj w Forbocie");
}

void loop() {
  delay(5000);
  Serial.println("Mineło Pięć sekund");
}

a tak wygląda komunikat o błędzie:

Compilation error: redefinition of 'void setup()'

PS: Zaczynam od nowego tabu

Edytowano przez Ed_konrad
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

Cześć, mam problem z wykonaniem zadania z gwiazdką. Czy moglibyście zerknąć?  problem z diodą gdy wpiszę komendę "zielone" zaczyna świecić, przy polejnych wpisywaniach "zielone" nie gaśnie. Co może być przyczyną?

#define czerwona 10
#define zielona 9

bool czyZielonaSwieci='false';

String odebraneDane="";

void setup() {
Serial.begin(9600);

pinMode(zielona,OUTPUT);
digitalWrite(zielona,LOW);

pinMode(czerwona,OUTPUT);
digitalWrite(czerwona,LOW);
}

void loop() {
  //bool czyZielonaSwieci='F';

if(Serial.available()>0)
{
  odebraneDane =Serial.readStringUntil('\n');

  if(odebraneDane=="zielona")
  {
    if(czyZielonaSwieci=='true')
    {
      digitalWrite(zielona,LOW);
      czyZielonaSwieci='false';
    }
    else
    {
      digitalWrite(zielona,HIGH);
      czyZielonaSwieci='true';
    }
    
  }

  if(odebraneDane=="czerwona")
  {
    digitalWrite(czerwona,HIGH);
    delay(2000);
    digitalWrite(czerwona,LOW);
  }


  if(odebraneDane!="zielona" && odebraneDane!="czerwona")
  {
    Serial.print("Podaj poprawny kolor! \n");
  }
}
}

 

Link do komentarza
Share on other sites

@drylus witam na forum 🙂 Zacznijmy od poprawienia tego jak korzystasz ze zmiennych typu bool - podczas przypisywania niepotrzebnie korzystasz tam z apostrofów. Aby zmienne te działały poprawnie musisz do nich przypisywać bezpośrednio false lub true.

  • Lubię! 1
Link do komentarza
Share on other sites

Jestem kompletnie zielony w sprawie programowania, mam trochę podstawowej wiedzy z elektroniki.

Zastanawiam się jak rozwiązać "Zadanie domowe nr 1.2" dochodząc do tego miejsca w kursie, w którym jest to zapisane.

Nie bardzo rozumiem jak z wiedzy zapisanej do tego miejsca można rozwiązać to zadanie. Wygląda na to, że aby rozwiązać to zadanie trzeba posiadać dodatkową wiedzę. Można gdzie na doczytać materiał o programowaniu aby rozwiązać to zadanie samodzielnie. 

Link do komentarza
Share on other sites

51 minut temu, Andrew25 napisał:

Nie bardzo rozumiem

A na czym utknąłeś? Nie wiesz jak podłączyć diodę? Nie wiesz jak włączyć / wyłączyć LED? Program to zbiór "instrukcji" wykonywanych w określonej kolejności. Postaraj się przeanalizować dostępne w kursie programy by zrozumieć co oznacza każda linijka programu. No a jeśli czegoś nie rozumiesz to pytaj - tylko konkretnie.

Link do komentarza
Share on other sites

Problem pojawił się na początku. "Zadanie domowe nr 1.2 Wybierz wolny pin i podłącz do niego drugą diodę. Napisz program, który będzie włączał obie diody LED. Następnie napisz program, w który sprawi, że obie diody będą migały na zmianę."

void setup() {
pinMode(8, OUTPUT); //8 jako wyjscie
pinMode(7, OUTPUT); //7 jako wyjscie
}


void loop () 
  {
  digitalWrite(8, HIGH); //Włączenie diody
  delay(3000); // 
  digitalWrite(8, LOW); //Wyłączenie diody
  delay(1000); //Odczekanie jednej sekundy
  if (digitalRead(8) == LOW) { //Jeśli 8 niski
    digitalWrite(7, HIGH); //Włącz diodę
    delay(3000);
    digitalWrite(7, LOW); //Wyłączenie diody
  delay(100); //Odczekanie jednej sekundy
  
  }
}

Napisałem coś takiego, ale to na podstawie dalszej części tego odcinka.  Wiem, że to co zrobiłem to strasznie nieporadne, że powinienem poczytać choćby o if, else i o wielu innych.  Czy na portalu jest ta wiedza?

Link do komentarza
Share on other sites

No dobrze. Zadanie mówi o dwóch wersjach programu:
a) program włącza obie LED
b) LED migają na zmianę.

Którą wersję realizuje Twój program?

7 minut temu, Andrew25 napisał:

powinienem poczytać choćby o if, else i o wielu innych.  Czy na portalu jest ta wiedza?

Oczywiście - o warunku if - else masz napisane zaraz pod treścią zadania - nie zauważyłeś? W samym Arduino IDE znajdziesz także pomoc w POMOC - REFERENCJE. W sieci także znajdziesz wiele literatury na temat podstaw programowania w języku C.

Link do komentarza
Share on other sites

Realizuje tą drugą część zadania.

Widziałem, ale tak jak napisałeś musze poczytać o programowaniu w C. Pozostaje mi poszukać literatury w sieci.

Szukać programowania w C czy C++? 

 

Edytowano przez Andrew25
Link do komentarza
Share on other sites

Jak było pierwsze zadanie z przyciskiem to od razu mam włączoną lampkę i gdy klikam nic się nie dzieje a jak odłączę przycisk to dioda mi gaśnie.
@SOYER pomożesz?

 

 

Edytowano przez AcziYT
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.