Treker (Damian Szymański) Maj 27, 2016 Udostępnij Maj 27, 2016 ko4, tak wystartuje 🙂 Właściwie, to plan zakładał start kursu Arduino II nawet do końca maja, jednak przez aktualny długi weekend postanowiłem lekko przesunąć start (o 2-3 dni). Tak, czy inaczej nowy kurs ruszy na pewno w następnym tygodniu. Cytuj Link do komentarza Share on other sites More sharing options...
BorskiMichal Lipiec 4, 2016 Udostępnij Lipiec 4, 2016 Ja miałem problemy ale udało mi się rozwiązać. Wbiłem na strone arduino i zrobiłem takie połaczenie jak oni. W sumie to tu jest chyba też dobrze. Aa no i miałem za wysoki kontrast, tak że literek nie było wgl widać. Pozdrawiam 🙂 https://www.arduino.cc/en/Tutorial/HelloWorld Cytuj Link do komentarza Share on other sites More sharing options...
leepa79 Sierpień 26, 2016 Udostępnij Sierpień 26, 2016 Zadanie 7.1 Zadanie 7.4 - może stoper nie taki wypasiony jak mają koledzy w poprzednich postach, ale przyjdzie kiedyś czas na lepszy 😉 #include <LiquidCrystal.h> //Dołączenie bilbioteki LiquidCrystal lcd(2, 3, 4, 5, 6, 7); //Informacja ja podlaczony wyświetlacz float czas = 0.0; //Na potrzeby 'uciekajacych' cyferek int stan = 0; //Zmiana stanu żeby przy ifie nie wlaczło void setup() { lcd.begin(16, 2); //Deklaracja typu lcd.setCursor(0, 0); //Ustawienie kursora lcd.print("Stoper:"); //Wyświetlenie tekstu pinMode(8, INPUT_PULLUP); //Przycisk włączania pinMode(9, INPUT_PULLUP); //Przycisk zatrzymania } void loop() { if (digitalRead(8) == LOW) //Jezeli switch 1 wcisniety { czas = 0; //Ustawienie zera po ponownym wcisnieciu (po zatrzymaniu) lcd.clear(); //Wyczyszczenie ekranu stan = 1; //Zmiana stanu while (stan == 1) //Petla gdy stan { lcd.setCursor(0, 0); //Ustawienie kursora lcd.print("Czas w sek.:"); //Wyświetlenie tekstu lcd.setCursor(0, 1); //Ustawienie kursora w odpowiednim momencie lcd.print(czas); //Wyświetlenie tekstu czas = czas + 0.1; delay(100); //Opóźnienie niby sekundy if (digitalRead(9) == LOW) //Jezeli switch 2 wcisniety { lcd.clear(); //Wyczyszczenie ekranu delay(100); //Małe opóznienie lcd.setCursor(0, 0); //Ustawienie kursora lcd.print("Zatrzymano w: "); //Jakies teksty lcd.setCursor(0, 1); //Ustawienie kursora lcd.print(czas); //Wyświetlenie tekstu lcd.print(" s"); stan = 0 ; //Zmiana stanu } } } } Jak zawsze wielkie dzięki za kolejną lekcję. Cytuj Link do komentarza Share on other sites More sharing options...
MaciejBurchardt Listopad 27, 2016 Udostępnij Listopad 27, 2016 Rozwiązanie zadania 7.1 wraz z nieodłącznym towarzyszem programisty 🙂 Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. 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
Treker (Damian Szymański) Listopad 27, 2016 Udostępnij Listopad 27, 2016 MaciejBurchardt, super 🙂 Również mam swoją kaczkę na biurku 😉 Cytuj Link do komentarza Share on other sites More sharing options...
MaciejBurchardt Listopad 28, 2016 Udostępnij Listopad 28, 2016 Mam pytanie dotyczące części "Wyświetlanie wyniku ADC na wyświetlaczu". Chciałem zrobić bardzo podobny układ jak w przykładzie ale pokazujący naświetlenie (w domyślnym przedziale 0 - 1023). Zamiast odczyt = analogRead(A0)*5.0/1023.0; zrobiłem po prostu odczyt = analogRead(A0); i ku mojemu zaskoczeniu urządzenie działa odwrotnie (wyświetlana wartość zmniejsza się wraz ze wzrostem naświetlenia) niż oczekiwałem. Nie bardzo wiem gdzie szukać winy ale domyślam się że albo niedostatecznie rozumiem sam dzielnik napięcia, albo zasadę odczytu na wejściach analogowych. Podpowie ktoś? Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Listopad 28, 2016 Udostępnij Listopad 28, 2016 MaciejBurchardt, sprawdź jak podłączyłeś dzielnik. Konkretnie chodzi o miejsce, w którym jest fotorezystor i to, gdzie jest zwykły rezystor. Cytuj Link do komentarza Share on other sites More sharing options...
MaciejBurchardt Listopad 28, 2016 Udostępnij Listopad 28, 2016 Próbowałem po napisaniu posta odwrócić sytuację i zamienić miejscami zasilanie oraz uziemienie na dzielniku. Wtedy działo się coś szczególnie dziwnego - wyświetlana wartość była wysoka (600-900) przy oświetleniu latarką oraz zakryciu ręką, a niska (spadała do przedziału 150-200) przy średnim oświetleniu pomieszczenia. Jutro spróbuję powtórzyć eksperyment i wkleić zdjęcie lub grafikę zmontowanego układu (choć, o ile się nie pomyliłem, wszystko jest tak jak na poglądowym schemacie w artykule). Edit - nie mam pojęcia o co chodziło. Zmontowałem układ od nowa i napisałem kod od zera. Teraz wszystko działa. Cytuj Link do komentarza Share on other sites More sharing options...
szmajdzik Luty 17, 2017 Udostępnij Luty 17, 2017 Zadanie 7.4 (Stoper), nieco zmodyfikowane, co pokazuje załączony film. Do lcd użyłem I2C aby zmniejszyć ilość kabelków 🙂 Pozdrawiam! __________ Komentarz dodany przez: Treker Poprawiłem umieszczenie filmu - na przyszłość nie ma potrzeby wgrywać jeszcze osobno plików w formie załącznika 🙂 Cytuj Link do komentarza Share on other sites More sharing options...
thequeash Marzec 21, 2017 Udostępnij Marzec 21, 2017 Jak za pomocą lcd.clear() wyczyścić tylko pierwszy wiersz? Albo nawet pojedyncze miejsca na wyświetlaczu? Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Marzec 23, 2017 Udostępnij Marzec 23, 2017 thequeash, funkcja lcd.clear(); nie daje takich możliwości, za jej pomocą można jedynie całkowicie wyczyścić wyświetlacz. Jeśli chcesz usunąć dane z pojedynczego miejsca, to najlepiej ustawić tam kursor i nadpisać dane pole znakiem spacji. Cytuj Link do komentarza Share on other sites More sharing options...
Robur Maj 3, 2017 Udostępnij Maj 3, 2017 Poniżej mój kod do zadania 7.4 /* 7.4 wyswietla na ekranie powitalny napis * po wcisnieciu przycisku zaczyna liczyc czase i wyswietla na ekranie az do nacisniecja drugiego przycisku * po nacisnieciu drugiego przycisku zatrzymuje prace i wyswietla rezultat */ #include <LiquidCrystal.h> //dolaczenie biblioteki LCD #define START 13 //wejscie cyfrowe do ktorego dolaczono START #define STOP 12 //wejscie cyfrowe do ktorego dolaczono STOP LiquidCrystal myLCD(2,3,4,5,6,7); //inicjacja obiektu myLCD podpietego do pinow //2 RS, 3 Enable, 4 D4, 5 D5, 6 D6, 7 D7 float czas=0; //licznik czasu boolean start_test=false; //testownie czy byl wcisniety przycisk START boolean stop_test=false; //testownie czy byl wcisniety przycisk STOP void setup() { pinMode (START, INPUT_PULLUP); //definicja przycisku start pinMode (STOP, INPUT_PULLUP); //definicja przycisku stop myLCD.begin(16,2); //okreslenie wielkosci LCD 16 znakow 2 wiersze myLCD.setCursor(0,0); //przesuniecie kursora na poczatek pierszego wiersza myLCD.print("Program stoper"); //wyslanie znakow na wyswietlacz myLCD.setCursor(0,1); //przesuniecie kursora na poczatek drugiego wiersza myLCD.print("START STOP"); delay(2000); myLCD.setCursor(0,1); myLCD.print("Czas: "); } void loop() { while (digitalRead(START)==HIGH && start_test==false){} //nie rob nic az wcisniety przycisk START, sprawdza tez czy start byl wczesniej wcisniety start_test=true; //po wcisnieciu zapmietaj, ze START byl wcisniety while (digitalRead(STOP)==HIGH && stop_test==false){ //dopoki nie wcisnieto stop i stop nie byl wcisniety wczesniej rob: myLCD.setCursor(7,1); //przesun kursor myLCD.print(czas/20); //wyswietl czas zamieniony na sekundy czas+=1.00; //zwieksz licznik czasu delay(50); //czekaj 50ms; nie 1s aby nie trzeba bylo czekac 1s z nacisnietym przyciskiem STOP } stop_test=true; //jesli tutaj jestes tp znaczy, ze byl wcisniety STOP i trzeba to zapamietac myLCD.setCursor(0,1); myLCD.print("Wynik: "); //Wyswietl tylko napis wynik, czas jest juz na ekranie } 1 Cytuj Link do komentarza Share on other sites More sharing options...
Robur Maj 7, 2017 Udostępnij Maj 7, 2017 Napisałem kod będący połączeniem obsługi przycisków (stoper 7.4) i regulacji podświetlenia. Zmiana podświetlenia zawsze o jeden krok niezależnie od długości wciśnięcia. Stan podświetlenia prezentowany w postaci paska na ekranie. /* 7.4 wyswietla na ekranie przewijany napis powitalny * jasnosc podswietlenie regulowana dwoma przyciskami * przyciski reaguja tylko na zmiane stanu, czyli wcisniecie i trzymanie spowoduje zmiane tylko o 1 * slupek na ekranie obrazuje poziom podswietlenia */ #include <LiquidCrystal.h> //dolaczenie biblioteki LCD #define MINUS 13 //wejscie cyfrowe do ktorego dolaczono PLUS #define PLUS 12 //wejscie cyfrowe do ktorego dolaczono MINUS #define backlight_port 9 //port do ktorego podlaczone podswietlanie, sterowanie sygnalem PWM LiquidCrystal myLCD(2,3,4,5,6,7); //inicjacja obiektu myLCD podpietego do pinow //2 RS, 3 Enable, 4 D4, 5 D5, 6 D6, 7 D7 int stan_plus=0; //stan przycisku plus int stan_plus_old=0; //poprzedni stan przycisku plus int stan_minus=0; //stan przycisku minus int stan_minus_old=0; //poprzedni stan przycisku minus int level=8; //poziom podswietlenia 1-16 tyle ile pozycji na ekranie int level_old=0; //poprzedni poziom podswietlenia potrzebne do podjecia decyzji, czy potrzebna zmiana int wypelnienie=0; //jasnosc podwsietleania void setup() { pinMode (PLUS, INPUT_PULLUP); //definicja przycisku start pinMode (MINUS, INPUT_PULLUP); //definicja przycisku stop analogWrite(backlight_port, 128); //ustawienie poczatkowego podswietlenia myLCD.begin(16,2); //okreslenie wielkosci LCD 16 znakow 2 wiersze myLCD.setCursor(0,0); //przesuniecie kursora na poczatek pierszego wiersza myLCD.print("Regulacja jasnosci podswietlania"); //wyslanie znakow na wyswietlacz for (int position=0; position<16; position++){ //przewijanie wyswietlacza, aby pokazal sie caly napis myLCD.scrollDisplayLeft(); delay(500); } myLCD.clear(); myLCD.setCursor(0,0); //przesuniecie kursora na poczatek pierwszego wiersza myLCD.print("MINUS PLUS"); myLCD.setCursor(0,1); myLCD.print(" "); //wyczyszczenie drugiego wiersza } void loop() { stan_plus=digitalRead(PLUS); stan_minus=digitalRead(MINUS); if (stan_plus!=stan_plus_old && level<16) //jesli zmienil sie stan przycisku PLUS i nie osiagnieto poziomu max if(stan_plus==HIGH) level++; //zwieksz poziom jasnosci if (stan_minus!=stan_minus_old && level>0) //jesli zmienil sie stan przycisku MINUS i nie osiagnieto poziomu max if(stan_minus==HIGH) level--; //zmniejsz pozion jasnosci stan_plus_old=stan_plus; stan_minus_old=stan_minus; if (level_old!=level){ wypelnienie=map(level,0,16,0,255); myLCD.setCursor(0,1); //przesuniecie kursora na poczatek drugiego wiersza myLCD.print(" "); //wyczyszczenie wiersza 16 spacji myLCD.setCursor(0,1); //przesuniecie kursora na poczatek drugiego wiersza for (int i=0; i<level; i++) myLCD.print(char(255)); //wyswietlenie znaku o danym kodzie ascii tutaj prostokat level_old=level; analogWrite(backlight_port, wypelnienie); } delay(50); //odstep czasy pomiedzy kolejnymi odczytami przyciskow } Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Maj 7, 2017 Udostępnij Maj 7, 2017 Robur, super, wygląda bardzo fajnie 🙂 Szczerze polecam jednak dodawać zawsze nawiasy klamrowe (nawet jeśli w warunku wykonujemy tylko jedno polecenie) - znacznie trudniej wtedy o błąd przy edycji programu. Decyzja należy do Ciebie, jeśli czujesz się pewnie w programowaniu, to oczywiście można pomijać nawiasy (tak jak to zrobiłeś), ale ich dodanie na pewno nie zaszkodzi 😉 Cytuj Link do komentarza Share on other sites More sharing options...
Matheu Maj 21, 2017 Udostępnij Maj 21, 2017 Miałem tylko jakieś stare, nie-bardzo typowe wyświetlacze (dostałem je z jakiś złomków) To jakiś stareńki typ, nic o nich nie wiedziałem, podświetlenie jest typu CCFL (jak w lampach Nixie???), i zasilane z 42V. Z dokumentacją też ciężko - zwykle był tylko rysunek z wymiarami i rozkładem pinów, nawet na stronie producenta (DataVision) było niewiele danych, tyle że dowiedziałem się, że mają sterownik typu ST7066. Z kolei sterownik ST7066 -podobobno jest (częściowo?) zgodny z HD44780. Jak patrzyłem na forum Arduino.cc - to też były z nim jakieś problemy... Zeby było śmieszniej - jak patrzyłem na dokumentację na stronie producenta!!! (DataVision) to inny był rozkład pinów niż wg opisów na płytce!!! A która z tych wersji jest prawdziwa??? Szkoda mi było upalić Arduino, to trochę miałem stracha, skoro nawet producent nie wie co czyni... No, ale Arduino nadal działa;) : Nie miałem skąd wziąć zasilania 42V (podświetlenie- lampy CCFL) więc tekst na wyświetlaczu jest bardzo słabo widoczny (a na fotce - jeszcze słabiej). Po obróbce w programie komputerowym: Mój pierwszy wyświetlacz! 😉 A kurs Forbota - rewelacja! Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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!