Skocz do zawartości

Otwarcie szafki zliczane na wyświetlaczu LCD (projekt).


Szymon456

Pomocna odpowiedź

245314697_Pocztek.thumb.png.40a179232990115118a7478fbe0a0be0.png

Ten projekt będzie zliczał otwarcie szafki za pomącą kontaktronu i wyświetlał liczbę otworzeń. Do tego projektu potrzebujemy:

  1. Wyświetlacz LCD 2×16,
  2. Płytkę stykową,
  3. Przewody połączeniowe męsko-męskie,
  4. Arduino,
  5. Kontaktron,
  6. Potencjometr 5k,

 Projekt składamy zgodnie z poniższym schematem:

FORBOT.thumb.png.78f0a601c081829e0952f8a55b19f8ba.png245314697_Pocztek.thumb.png.40a179232990115118a7478fbe0a0be0.png

Teraz pora na napisanie kodu. Mój wygląda tak:

#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7); 
int otworzenie = 0;
#define kontaktron 8
int otwarcieP/F = 0; //narazie nie uzywana

void setup() {
  digitalWrite(kontaktron, OUTPUT);
  lcd.begin(16,2);

}

void loop() {
  if(digitalRead(kontaktron) == HIGH && otwarcieP/F == 0) {
    otworzenie = otworzenie + 1;
    otwarcieP/F = otwarcieP/F + 1;
  }else if(digitalRead(kontaktron) == LOW && otwarcieP/F == 1) {
    otwarcieP/F = otwarcieP/F - 1;                
  }
              
  
  lcd.setCursor(0, 0); 
  lcd.print ( otworzenie); 
  lcd.setCursor(0, 1); 
  lcd.print("razy.");
  delay(1000);
   
}

Wgrywamy i potencjometrem regulujemy kontrast.

Uwaga: Zamiast przycisku użyłem kontaktronu. Można też tak zrobić gdy się chcę mieć zliczanie otwarcia np. szafki, a nie naciśnięcia przycisku.

Autor: Szymon, klasa 3 SP, 2021 ( Utworzenie).

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

@Szymon456 warto w takiej sytuacji nazywać zmienne w taki sposób, aby ich nazwy sugerowały ich przeznaczenie. Tutaj, nazwa ta, może być w przyszłości myląca, bo adc najczęściej kojarzone jest z przetwornikiem analogowo-cyfrowym. Wiem, że to drobiazg i teraz o tym pamiętasz, ale przy większych programach, do których wraca się po dłuższej przerwie, takie nazwy zmiennych mogą być mylące 🙂

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

Dnia 26.10.2022 o 13:57, Szymon456 napisał:

Tak, zmontowałem taki układ i rzeczywiście działał

Na papierze 😉 w programie są tak oczywiste błędy że śmiem wątpić aby ten układ działał poprawnie. Już na początku coś co mi podpowiada że ten układ skończył tylko jako schemat:

digitalWrite(kontaktron, OUTPUT);

 

Link do komentarza
Share on other sites

1 godzinę temu, _LM_ napisał:
digitalWrite(kontaktron, OUTPUT)

Oczywiście  to jest pomieszanie z poplątaniem, ale kompiltor to łyknie, a program się wykona.

W Arduino OUTPUT jest zdefiniowane jako:

#define OUTPUT 0x1

a więc po podstawieniu mamy

digitalWrite(8, 1);         // więc całkiem poprawnie

Ponieważ po restarcie wszystkie piny są wejściami (a powyższa instrukcja tego nie zmienia, tylko pisze w próżnię), dlatego ciąg dalszy programu może i działa.

 

Link do komentarza
Share on other sites

7 minut temu, _LM_ napisał:

Wykonywać się będzie, ale czy i w jaki sposób AVR zareaguje na zwarcie wyjścia w stanie wysokim do masy? 

Przeczytaj jeszcze raz 😄 To nie jest pinMode() tylko digitalWrite()... trochę pokręcone, ale działa. To to samo co digitalWrite(<X>, HIGH);

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