Skocz do zawartości

Menu na oled 1306 z obsługą silników


Norbert7630

Pomocna odpowiedź

16 minut temu, SOYER napisał:

Użyję słów ethanaka, spróbuj postawić się w miejscu procesora i przeanalizuj co on po kolei robi w każdej pętli(loop).

Jak co, kręci się jak pies za własnym ogonem 😉

Link do komentarza
Share on other sites

@ethanak napisze ci coś tylko nie odbieraj tego jako obrażanie Ciebie, czy jakkolwiek krytykę bo jesteś łebski facet i masz w h.j wiedzy na temat programowania C/C++. W 2005 roku w styczniu rozmawiałem ze szwagrem zaproponował mi przyjazd do Anglii, bo lepsze zarobki bo można sporo odłożyć. Kiedy zapytałem się o znajomość języka, odpowiedział że ludzi potrzebują więc Kali jeść Kali pić wystarczy. Więc ok pakuje tobołki i jadę. Na miejscu rzeczywistość pokazała co innego że nie wystarczy Kali jeść, Kali pić potrzebne są jakieś solidniejsze podstawy znajomości języka, owszem potem się tego języka będąc tam nauczyłem trochę. Ta Anglia to taki twój kurs do którego mi dałeś link, nie jest dla takich jak ja, ze znajomością kali jeść kali pić  czyli włącz diodę wyłącz. Kurs jest ciekawy bo początek jako tako dam rade załapać, ale już następna część z jakimś goto czy etykieta i przykłady na tym .....nie to nie dla mnie. Ale na pewno wrócę do tego kursu jak coś więcej załapie, bo łatwiej mi się uczyć na takich przykładach jak z forbota, ale kurs naprawdę merytorycznie ciekawy 🙂

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

@Norbert7630 ale takie ćwiczenie logicznego myślenia to super sprawa. Kilka dni temu @ethanakna tym forum dał mi fajną lekcję zupełnie odwrotnego podejścia do problemu niż ja podszedłem. Super uczucie jak po ciężkim namyśle "odkrywasz Amerykę"😁😁😁

Edytowano przez SOYER
Link do komentarza
Share on other sites

@SOYER wiem nie raz tak miałem w innych sytuacjach w życiu 😀ale @ethanak, Ty, @farmaceuta czy inni musicie sobie zdać sprawę z tego że ludzi dzieli się na kategorię, jedni pewnych rzeczy uczą się szybko a drugich rzeczy wolniej, wręcz potrzebują łopatologicznych przykładów. Znam ludzi którzy z matematyką sobie kiepsko radzili a historia była perfect. Mówi się że jak masz głowę do nauki to nauczysz się szybko wszystkiego, no nie do końca to prawda. Wy z tym nie macie problemu nie wiem może macie predyspozycje do tego akurat kierunku, ja go  nie mam i dlatego potrzebuje łopatologicznego tłumaczenia. I błagam nie piszcie że się użalam nad sobą bo mam to głęboko gdzieś, czy stanę się mistrzem świata w programowaniu czy nie. Arduino dla mnie to tylko zabawa trochę hobby, sposób na rozwiązanie nie których problemów, bo ma potencjał i jest tanie, ale bez parcia na szkło. 😉Wiem, wiem, wiem zaraz komentarze typu że my przecież też kiedyś zaczynaliśmy......tak zaczynaliście ale zrozumcie wiedza do waszych głów, wlewała się wiadrami a do mojej głowy ciężko wlać kieliszek od wódki wiedzy 🤣. Także Panowie z chęcią się czegoś od was nauczę ale tylko metodą prostą(łopatologia), z góry dziękuje za pomoc. Odnośnie wcześniejszych wypowiedzi Kolegów ....spróbuj się postawić w miejscu procesora i co on robi.....więc robi dokładnie to co samochód na rondzie kreci się w kółko i czeka na sygnał co ma robić dalej, przynajmniej tak jakoś mi tłumaczył @SOYER ........przeanalizuj co on robi w każdej pętli loop?......to jest więcej pętli w sketchu? bo ja widzę tylko jedną główna.

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

25 minut temu, Norbert7630 napisał:

przeanalizuj co on robi w każdej pętli loop?......to jest więcej pętli w sketchu? bo ja widzę tylko jedną główna.

Tak, w tym przypadku jest jedna. Nie chodzi mi o to, że kręci się w kółko, to wiadomo, ale co konkretnie robi w kółko? Co ma zapisane w szkicu? Wtedy znajdziesz odpowiedź dlaczego program zachowuje się tak jak się zachowuje.

Link do komentarza
Share on other sites

Żeby sprawdzić w którym miejscu programu jest aktualnie procesor i ułatwić sobie szukanie błędu, ja robię trik z wpisywaniem w różnych miejscach szkicu linijki 

Serial.println("1");

z kolejnymi numerami w treści:1,2,3,4...

wtedy widzisz na serial monitorze co się dzieje, w którym miejscu programu jest procesor, co omija a co nie.

 

 

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

43 minuty temu, Norbert7630 napisał:

ludzi dzieli się na kategorię,

Daleki byłbym od jakiegoś wydumanego "podziału". Zresztą gdy ktoś coś takiego twierdzi zawsze przypomina mi się cytat ze "Świata Studni:

Cytat

Ludzie dzielą się na kanalie, hipokrytów i barany. Mając taki wybór mam zaszczyt zaliczać się do łotrów.

43 minuty temu, Norbert7630 napisał:

I błagam nie piszcie że się użalam nad sobą

Nie użalasz się, tylko jęczysz że "nie dasz rady". Jeśli wyjdziesz z tego założenia to faktycznie nie dasz rady, bo nawet nie będziesz próbować (bo po co, przecież nie dasz rady, prawda?)

I nikomu się tu żadna wiedza wiadrami do głowy nie wlewała - kiedy ja zaczynałem nie było internetu, kupienie jakiejś konkretnej książki graniczyło z cudem. Pojawienie się domowych ośmiobitowców to była bajeczka... cóż z tego, gdy jedyne wartościowe czasopisma (64'er czy Happy Computer) były po niemiecku (jakoś po pewnym czasie zacząłem rozumieć ten język przynajmniej na tyle, żeby przeczytać artykuł). A jakoś - mimo traktowania programowania mojego C-16 jako zabawy - udało mi się jakieś początki opanować.

Piszesz, że trzeba Ci łopatą do głowy informacje wbijać. No i właśnie próbuję to robić, tyle że odbijam się od ściany z napisem "ja nie rozumiem i nie będę nawet próbować zrozumieć bo i tak nie zrozumiem". Więc może zrób to o co prosiliśmy: przeanalizuj zachowanie tego Twojego kawałka kodu (nie tego od menu, tylko tego od przyciskania jednego klawisza) i jak już zrozumiesz to się tu pochwal. Bez tego zabawa w Arduino ograniczy się do wgrywania gotowców (co może się znudzić maksymalnie po trzech dniach). A  przyznaj sam - chcesz się pobawić?

Aha, i nie chcę słyszeć o żadnych wytłumaczeniach że "matematyka". Na tym poziomie matematyka ogranicza się do znajomości tabliczki mnożenia, a tyle chyba potrafisz.

 

 

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

@slon film bardzo motywujący choć myślałem że coś o programowaniu😉 ogólnie to lubię filmy z Denzelem. @ethanak chodzi o tą część kodu

if (digitalRead(przyciskEnter)== LOW){  
      menuSilnik1();

@SOYER wychodzi na to że że gdy wcisnę enter to przechodzi z menu głównego do silnik1 on/ff ale zaraz potem wraca do menu głównego, przynajmniej tak pokazuje monitor portu szeregowego, wciskam przycisk i wyskakuje informacja 3, 1, to tak jakby na chwile wskoczył do case w silnik1 off/on i szybko wrócił do menu głównego a przecież ma pozostać tam i sprawdzać dalej.

 

Link do komentarza
Share on other sites

3 minuty temu, Norbert7630 napisał:

przecież ma pozostać tam i sprawdzać dalej.

 

Pokombinuj co trzeba zrobić by tam pozostał i sprawdzał dalej, ale nie wiemy co masz dalej bo nie wkleiłeś całego kodu.

Edytowano przez SOYER
Link do komentarza
Share on other sites

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED szerokość
#define SCREEN_HEIGHT 64 // OLED wysokość
#define OLED_RESET     4 
#define SCREEN_ADDRESS 0x3c //adres fizyczny wyswietlacza
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
#define przyciskEnter 8  //zdefiniowane piny dla przycisków
#define przyciskGora  9
#define przyciskDol  10
#define przyciskBack 11
#define Silnik1 2   //zdefiniowane piny dla silnikow
#define Silnik2 3

void setup() {
  Serial.begin(9600);
  display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS);
  pinMode(przyciskEnter, INPUT_PULLUP);
  pinMode(przyciskGora, INPUT_PULLUP); //ustawienie pinów dla przycisków " wejście" podciągnięty
  pinMode(przyciskDol, INPUT_PULLUP);  //rezystor wewnętrzny PULLUP
  pinMode(przyciskBack, INPUT_PULLUP);
  pinMode(Silnik1, OUTPUT);  //ustawienie pinów dla silnikow "wyjście"
  pinMode(Silnik2, OUTPUT);
  
   }
void loop() {
  menuGlowne();
}
int menuEkran = 1;
int menuEkran1 = 1;

void menuGlowne(){
  
  switch(menuEkran){
    
  case 1:
  
  display.clearDisplay();
  display.setTextSize(2);             
  display.setTextColor(SSD1306_WHITE);        
  display.setCursor(0,10);             
  display.println("> SILNIK 1");  
  display.setCursor(0,35);          
  display.println(" SILNIK 2");
  display.display(); 
  if (digitalRead(przyciskEnter)== LOW){  
      menuSilnik1();
      Serial.println(1);}
 
    break;
 case 2:
 Serial.println(2);
  display.clearDisplay();
  display.setTextSize(2);             
  display.setTextColor(SSD1306_WHITE);        
  display.setCursor(0,10);             
  display.println(" SILNIK 1");  
  display.setCursor(0,35);          
  display.println("> SILNIK 2");
  display.display();
  if (digitalRead(przyciskGora)== LOW){  
  menuEkran == 1;}
  break;
  }
}
void menuSilnik1(){
  switch(menuEkran1){
    case 1:
    Serial.println(3);
    display.clearDisplay();
  display.setTextSize(2);             
  display.setTextColor(SSD1306_WHITE);        
  display.setCursor(20,10);             
  display.println("SILNIK 1");
  display.setCursor(10,40);            
  display.println(" ON");
  display.setCursor(60,40);             
  display.println("> OFF");
  display.display();
  if (digitalRead(przyciskGora)== LOW){  
  menuEkran1 = 2;} 
  break;
  case 2:
    Serial.println(4);
    display.clearDisplay();
  display.setTextSize(2);             
  display.setTextColor(SSD1306_WHITE);        
  display.setCursor(20,10);             
  display.println("SILNIK 1");
  display.setCursor(10,40);            
  display.println("> ON");
  display.setCursor(60,40);             
  display.println(" OFF");
  display.display();
  if (digitalRead(przyciskGora)== LOW){  
  menuEkran1 = 2;} 
  break;
 
  }
}

na razie chciałem to ogarnąć

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.