Ta strona używa ciasteczek (plików cookies), dzięki którym może działać lepiej. Dowiedz się więcejRozumiem i akceptuję

Kurs Arduino II - #6 - wyświetlacze 7-segmentowe

Autor Wiadomość
Treker 




Posty: 7956
Pomógł: 118 razy
Otrzymał 509 piw(a)
Skąd: Gdynia
Programuję w:
C, Arduino
Moje roboty:
Spectrum, Fuzzy

Wysłany: 31-08-2017, 19:31   

marek1707, ja tylko dodam dla "usprawiedliwienia", że właściwie w kursie Arduino nigdzie tablice się nie pojawiły... Wiem mój błąd ;) Nadrobię to za jakiś czas przy odświeżaniu kursu Arduino (poziom I) dodam tam informację o tablicach w praktyce.


Zachęcam do korzystania z forum - nie pomagam indywidualnie przez PW/maila.
Sprawdź » Kurs ARDUINOKurs podstaw elektronikiZbuduj swojego robota - kurs!
Postaw piwo autorowi tego posta
 
 
Radosław 



Posty: 4
Wysłany: 01-09-2017, 21:18   Poprawa zadania 6.3

Kod programu: Zaznacz cały

#define seg_a 7    //Opis
#define seg_b 5    //segmentów
#define seg_c 2    // i
#define seg_d 4    // ich
#define seg_e 3    //pinów
#define seg_f 6
#define seg_g 8
#define wys_jed 9       // piny do
#define wys_dwa 10    // wyświetlaczy
void setup() {

   pinMode(seg_a,OUTPUT);
   pinMode(seg_b,OUTPUT);
   pinMode(seg_c,OUTPUT);
   pinMode(seg_d,OUTPUT);
   pinMode(seg_e,OUTPUT);
   pinMode(seg_f,OUTPUT);
   pinMode(seg_g,OUTPUT);
   pinMode(wys_jed,OUTPUT);
   pinMode(wys_dwa,OUTPUT);
   
}
int k=0;                                                       //Z mienna potrzeba do poruszania się po kolumnach tablicy "stany"
byte segmenty[7]={seg_a,seg_b,seg_c,seg_d,seg_e,seg_f,seg_g};  // Tablica przechowująca piny Arduino od poszczególnych segmentów
int stany[10][7]={{HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,LOW},       
                  {LOW,HIGH,HIGH,LOW,LOW,LOW,LOW},             // Tablica dwuwymiarowa, która
                  {HIGH,HIGH,LOW,HIGH,HIGH,LOW,HIGH},          // przechowuje stany segmentów
                  {HIGH,HIGH,HIGH,HIGH,LOW,LOW,HIGH},          // dla kolejnych cyfr
                  {LOW,HIGH,HIGH,LOW,LOW,HIGH,HIGH},
                  {HIGH,LOW,HIGH,HIGH,LOW,HIGH,HIGH},
                  {HIGH,LOW,HIGH,HIGH,HIGH,HIGH,HIGH},
                  {HIGH,HIGH,HIGH,LOW,LOW,LOW,LOW},
                  {HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH},
                  {HIGH,HIGH,HIGH,HIGH,LOW,HIGH,HIGH}};
                 
void loop() {
 
  for(int i=0;i<10;i++){                  // Pętla do zmiany cyfry dziesiątek
    for ( int j=0;j<10;j++){              // Pętla do zmiany cyfry jedności
      for( int k=0;k<10;k++){            // Pętla do zmiany czasu trwania odliczania
  digitalWrite(wys_jed,HIGH);            // Włączenie wyświetlacza numer 1
  digitalWrite(wys_dwa,LOW);              // Wyłączenie wyświetlacza numer 2
  showTheNumber(i);                     // Funkcja do wybierania odpowiedniej cyfry
  delay(5);
  digitalWrite(wys_jed,LOW);           
  digitalWrite(wys_dwa,HIGH);
  showTheNumber(j);
  delay(5);
      }
    }
}
}

void showTheNumber(byte number){                   
  for ( int i=0; i<7; i++){                      // Pętla do poruszania się po kolejnych segmentach
  digitalWrite(segmenty[i],stany[number][k]);    // Załączanie segmentów w zależności od cyfry, która ma być wyświetlona 
  k++;
  if(k==7) k=0;                                  // Jeżeli cyfra została wyświetlona to idziemy do następnej
  }
}


Hej marek 1707, dzięki za komentarz. Czy chodziło Ci o coś takiego ?

Postaw piwo autorowi tego posta
 
 
marv254 



Posty: 2
Otrzymał 2 piw(a)
Wysłany: 19-09-2017, 19:06   

Witam,

Mój kod do zadania 6.2
Kod programu: Zaznacz cały

#define SEG_C 2
#define SEG_E 3
#define SEG_D 4
#define SEG_B 5
#define SEG_G 6
#define SEG_A 7
#define SEG_F 8
#define PRZYCISK1 9
#define PRZYCISK2 10
#define PRZYCISK3 11

int i = 0;
 
void setup() {
  //Konfiguracja pinow jako wyjscia
  pinMode(SEG_A, OUTPUT);
  pinMode(SEG_B, OUTPUT);
  pinMode(SEG_C, OUTPUT);
  pinMode(SEG_D, OUTPUT);
  pinMode(SEG_E, OUTPUT);
  pinMode(SEG_F, OUTPUT);
  pinMode(SEG_G, OUTPUT);
  pinMode(PRZYCISK1, INPUT_PULLUP);
  pinMode(PRZYCISK2, INPUT_PULLUP);
  pinMode(PRZYCISK3, INPUT_PULLUP);
}
 
void loop() {
 
  wyswietlacz(i); //Wyswietl wartosc na wyswietlaczu
 
  if (digitalRead(PRZYCISK1) == LOW){ //przycisk +
    i++;
    wyswietlacz(i); //Wyswietl wartosc na wyswietlaczu
    delay(500);
    }
  if(digitalRead(PRZYCISK2) == LOW) { //przycisk -
    i--;
    wyswietlacz(i); //Wyswietl wartosc na wyswietlaczu
    delay(500);
  }
  if(digitalRead(PRZYCISK3) == LOW) { //reset
    i = 0;
    wyswietlacz(i);
    delay(500);
  }
}
 
void wyswietlacz(int cyfra) {
  //Instrukcja switch ustawia odpowiednie stany na wyjsciach
  //w zaleznosci od podanej cyfry
  switch (cyfra) {
    case 0:
        digitalWrite(SEG_A, HIGH);
        digitalWrite(SEG_B, HIGH);
        digitalWrite(SEG_C, HIGH);
        digitalWrite(SEG_D, HIGH);
        digitalWrite(SEG_E, HIGH);
        digitalWrite(SEG_F, HIGH);
        digitalWrite(SEG_G, LOW);
    break;
   
    case 1:
        digitalWrite(SEG_A, LOW);
        digitalWrite(SEG_B, HIGH);
        digitalWrite(SEG_C, HIGH);
        digitalWrite(SEG_D, LOW);
        digitalWrite(SEG_E, LOW);
        digitalWrite(SEG_F, LOW);
        digitalWrite(SEG_G, LOW);
    break;
   
    case 2:
        digitalWrite(SEG_A, HIGH);
        digitalWrite(SEG_B, HIGH);
        digitalWrite(SEG_C, LOW);
        digitalWrite(SEG_D, HIGH);
        digitalWrite(SEG_E, HIGH);
        digitalWrite(SEG_F, LOW);
        digitalWrite(SEG_G, HIGH);
    break;
   
    case 3:
        digitalWrite(SEG_A, HIGH);
        digitalWrite(SEG_B, HIGH);
        digitalWrite(SEG_C, HIGH);
        digitalWrite(SEG_D, HIGH);
        digitalWrite(SEG_E, LOW);
        digitalWrite(SEG_F, LOW);
        digitalWrite(SEG_G, HIGH);
    break;
   
    case 4:
        digitalWrite(SEG_A, LOW);
        digitalWrite(SEG_B, HIGH);
        digitalWrite(SEG_C, HIGH);
        digitalWrite(SEG_D, LOW);
        digitalWrite(SEG_E, LOW);
        digitalWrite(SEG_F, HIGH);
        digitalWrite(SEG_G, HIGH);
    break;
   
    case 5:
        digitalWrite(SEG_A, HIGH);
        digitalWrite(SEG_B, LOW);
        digitalWrite(SEG_C, HIGH);
        digitalWrite(SEG_D, HIGH);
        digitalWrite(SEG_E, LOW);
        digitalWrite(SEG_F, HIGH);
        digitalWrite(SEG_G, HIGH);
    break;
   
    case 6:
        digitalWrite(SEG_A, HIGH);
        digitalWrite(SEG_B, LOW);
        digitalWrite(SEG_C, HIGH);
        digitalWrite(SEG_D, HIGH);
        digitalWrite(SEG_E, HIGH);
        digitalWrite(SEG_F, HIGH);
        digitalWrite(SEG_G, HIGH);
    break;
   
    case 7:
        digitalWrite(SEG_A, HIGH);
        digitalWrite(SEG_B, HIGH);
        digitalWrite(SEG_C, HIGH);
        digitalWrite(SEG_D, LOW);
        digitalWrite(SEG_E, LOW);
        digitalWrite(SEG_F, LOW);
        digitalWrite(SEG_G, LOW);
    break;
   
    case 8:
        digitalWrite(SEG_A, HIGH);
        digitalWrite(SEG_B, HIGH);
        digitalWrite(SEG_C, HIGH);
        digitalWrite(SEG_D, HIGH);
        digitalWrite(SEG_E, HIGH);
        digitalWrite(SEG_F, HIGH);
        digitalWrite(SEG_G, HIGH);
    break;
   
    case 9:
        digitalWrite(SEG_A, HIGH);
        digitalWrite(SEG_B, HIGH);
        digitalWrite(SEG_C, HIGH);
        digitalWrite(SEG_D, HIGH);
        digitalWrite(SEG_E, LOW);
        digitalWrite(SEG_F, HIGH);
        digitalWrite(SEG_G, HIGH);
    break;

    case 10: //wyswietl blad gdy wartosc przekroczy 10
        digitalWrite(SEG_A, HIGH);
        digitalWrite(SEG_B, LOW);
        digitalWrite(SEG_C, LOW);
        digitalWrite(SEG_D, HIGH);
        digitalWrite(SEG_E, LOW);
        digitalWrite(SEG_F, LOW);
        digitalWrite(SEG_G, HIGH);
    break;     
  }
}

Postaw piwo autorowi tego posta
 
 
Więcej szczegółów
Wystawiono 1 piw(a):
Treker
SOYER 



Posty: 150
Otrzymał 4 piw(a)
Skąd: Kryry
Wysłany: 05-12-2017, 10:26   

Witam, może już wiadomo kiedy "aktualizacja kursu arduino" i coś o tablicach?
Czy będzie też coś o wyświetlaczach tekstowych? Albo podajcie jakiś fajny link na ten temat...
Thx.

Postaw piwo autorowi tego posta
 
 
ethanak 




Posty: 75
Otrzymał 3 piw(a)
Programuję w:
C, C++
Wysłany: 05-12-2017, 11:50   

O tablicach jest bardzo ładny rozdział tutaj. Zapoznaj się najlepiej z całym kursem - przyda się.

Postaw piwo autorowi tego posta
 
 
Treker 




Posty: 7956
Pomógł: 118 razy
Otrzymał 509 piw(a)
Skąd: Gdynia
Programuję w:
C, Arduino
Moje roboty:
Spectrum, Fuzzy

Wysłany: 05-12-2017, 12:16   

SOYER, gdy będą znane konkretny, to wszystkie informacje będą pojawiały się na blogu :) Jeśli chodzi o wyświetlacze tekstowe, to były omawiane podczas pierwszego kursu Arduino: Kurs Arduino – #7 – Wyświetlacz tekstowy, LCD 2×16


Zachęcam do korzystania z forum - nie pomagam indywidualnie przez PW/maila.
Sprawdź » Kurs ARDUINOKurs podstaw elektronikiZbuduj swojego robota - kurs!
Postaw piwo autorowi tego posta
 
 
SOYER 



Posty: 150
Otrzymał 4 piw(a)
Skąd: Kryry
Wysłany: 05-12-2017, 12:36   

Przepraszam Treker, pomyliłem się, oczywiście tekstowe znam, chodziło mi o graficzne :oops:

Postaw piwo autorowi tego posta
 
 
Treker 




Posty: 7956
Pomógł: 118 razy
Otrzymał 509 piw(a)
Skąd: Gdynia
Programuję w:
C, Arduino
Moje roboty:
Spectrum, Fuzzy

Wysłany: 05-12-2017, 12:41   

SOYER, na ten moment nie ma jak poruszyć tego tematu, bo zestawu do kursów Arduino nie zawierają wyświetlaczy graficznych. Pracujemy jednak nad nowymi modułami np. do robota. Tam pojawi się wyświetlacz graficzny, więc będziemy przy okazji zajmować się również tym tematem :)


Zachęcam do korzystania z forum - nie pomagam indywidualnie przez PW/maila.
Sprawdź » Kurs ARDUINOKurs podstaw elektronikiZbuduj swojego robota - kurs!
Postaw piwo autorowi tego posta
 
 
SOYER 



Posty: 150
Otrzymał 4 piw(a)
Skąd: Kryry
Wysłany: 05-12-2017, 13:09   

Jakieś linki do info o graficznych w arduino?;)

Postaw piwo autorowi tego posta
 
 
Treker 




Posty: 7956
Pomógł: 118 razy
Otrzymał 509 piw(a)
Skąd: Gdynia
Programuję w:
C, Arduino
Moje roboty:
Spectrum, Fuzzy

Wysłany: 05-12-2017, 13:35   

SOYER, wszystko zależy od sterownika wbudowanego w konkretny wyświetlacz. Najlepiej będzie jak znajdziesz wyświetlacz, który Cie interesuje i później poszukasz bibliotek pod konkretny sterownik :)


Zachęcam do korzystania z forum - nie pomagam indywidualnie przez PW/maila.
Sprawdź » Kurs ARDUINOKurs podstaw elektronikiZbuduj swojego robota - kurs!
Postaw piwo autorowi tego posta
 
 
ethanak 




Posty: 75
Otrzymał 3 piw(a)
Programuję w:
C, C++
Wysłany: 05-12-2017, 13:45   

@Treker: bez przesady - biblioteki do konkretnych sterowników nie są pisane od zera, tylko bazują na jakiejś ogólnej klasie graficznej, dodając tylko konkretne implementacje prymitywów. I warto zapoznać się z taką klasą choćby po to, aby później nie mylić biblioteki grafiki z taką właśnie implementacją.
@SOYER: Zerknij na https://learn.adafruit.com/adafruit-gfx-graphics-library.

Postaw piwo autorowi tego posta
 
 
SOYER 



Posty: 150
Otrzymał 4 piw(a)
Skąd: Kryry
Wysłany: 05-12-2017, 17:50   

Dzięki chłopaki.

Postaw piwo autorowi tego posta
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Wersja do druku

Skocz do:  

Nie rozwiązałeś swojego problemu? Zobacz podobne tematy: Kurs Arduino - #9 - ... Kurs STM32 - #4 - St... Kurs STM32 - #5 - Ko... Kurs STM32 - #3 - Pł...
lub przeszukaj forum po wybranych tagach: elektronika, komentarze, majsterkowanie, robotyka


Powered by phpBB modified by Przemo © 2003 phpBB Group
Popularne kursy: Arduinopodstawy elektroniki