• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Wyprowadzenia wyświetlacza LED 8 segmentowy 4 cyfrowy. Test czy działa.
#11
(03-11-2017, 11:24)krn78 napisał(a): Nie widać, jakie są piny po prawej stronie. Czy jeden z nich to DIN?
Przy okazji, połącz układ z przykładu, którego link zamieściłem, wklej kod, uruchom i sprawdź, czy działa.

Piny po prawej to VCC,SCLK,RCLK,QH,GND NA 8 CYFROWYM A NA 4 CYFROWYM TAK SAMO. Próbowałem odczytać z tych małych chipów z tyłu - nie całe rozszyfrowałem  tylko 0595 albo 74HC595.
 
Odpowiedź
#12
(03-11-2017, 11:24)krn78 napisał(a): Nie widać, jakie są piny po prawej stronie. Czy jeden z nich to DIN?
Przy okazji, połącz układ z przykładu, którego link zamieściłem, wklej kod, uruchom i sprawdź, czy działa.

Który link?
 
Odpowiedź
#13
Ten z drugiego postu: tutaj. Jest tam zamieszczony gotowy układ z kodem. Tyle tylko, że tam wyświetlacz ma pin oznaczony DIN. Nie wiem, czy u Ciebie taki jest.
 
Odpowiedź
#14
(03-11-2017, 13:13)krn78 napisał(a): Ten z drugiego postu: tutaj. Jest tam zamieszczony gotowy układ z kodem. Tyle tylko, że tam wyświetlacz ma pin oznaczony DIN. Nie wiem, czy u Ciebie taki jest.

Nie mam DIN , jest DIO i z prawej QH . Chip z tego co odczytałem 74HC595. Bibliotekę 74HC595 już mam. Znalazłem dzisiaj taki program. Działa. Wyświetla krobki. Teraz bym chciał wiedzieć co jest do czego.  To wiem:
int dataPin = 2; ///dio
int latchPin = 3; //rclk
int clockPin = 4; //sclk

Ustawienia portów Arduino - wyświetlacz

skomplikowanyąplikowany sposób?
Kod:
int dataPin = 2; ///dio
int latchPin = 3; //rclk
int clockPin = 4; //sclk
const byte ARRAY_SIZE = 27;
byte segment_codes[ARRAY_SIZE];
String available_chars[ARRAY_SIZE];

void show(String value){
int skip = 0;
for(int i=0; i<value.length(); i++) {
if(!((String)value[i]).equals(".")) {
int indexOfCharToWrite = findIndexOfChar((String)value[i]);
if(indexOfCharToWrite > -1){
byte bitToWrite = 0;
digitalWrite(latchPin, LOW);
byte code = segment_codes[indexOfCharToWrite];
boolean skipNext = false;
if(((String)value[i+1]).equals(".")) {
bitWrite(code, 7, 0);
skipNext = true;
}
shiftOut(dataPin, clockPin, MSBFIRST, code);
bitWrite(bitToWrite, i-skip, 1);
shiftOut(dataPin, clockPin, LSBFIRST, bitToWrite);
digitalWrite(latchPin, HIGH);
if(skipNext){
skip++;
}
}
}
}
}

int findIndexOfChar(String character){
int wantedpos = -1;
for(int i=0; i< ARRAY_SIZE; i++){
if(character.equals(available_chars[i])){
wantedpos = i;
break;
}
}
return wantedpos;
}

void setup() {
available_chars[0] = "0";
available_chars[1] = "1";
available_chars[2] = "2";
available_chars[3] = "3";
available_chars[4] = "4";
available_chars[5] = "5";
available_chars[6] = "6";
available_chars[7] = "7";
available_chars[8] = "8";
available_chars[9] = "9";
available_chars[10] = "A";
available_chars[11] = "b";
available_chars[12] = "D";
available_chars[13] = "c";
available_chars[14] = "d";
available_chars[15] = "E";
available_chars[16] = "F";
available_chars[17] = "H";
available_chars[18] = "h";
available_chars[19] = "L";
available_chars[20] = "n";
available_chars[21] = "I";
available_chars[22] = "O";
available_chars[23] = "o";
available_chars[24] = "P";
available_chars[25] = "S";
available_chars[26] = " ";

segment_codes[0]=0b11000000;
segment_codes[1]=0b11111001;
segment_codes[2]=0b10100100;
segment_codes[3]=0b10110000;
segment_codes[4]=0b10011001;
segment_codes[5]=0b10010010;
segment_codes[6]=0b10000011;
segment_codes[7]=0b11111000;
segment_codes[8]=0b10000000;
segment_codes[9]=0b10011000;
segment_codes[10]=0b10001000;
segment_codes[11]=0b10000011;
segment_codes[12]=0b11000110;
segment_codes[13]=0b10100111;
segment_codes[14]=0b10100001;
segment_codes[15]=0b10000110;
segment_codes[16]=0b10001110;
segment_codes[17]=0b10001001;
segment_codes[18]=0b10001011;
segment_codes[19]=0b11000111;
segment_codes[20]=0b10101011;
segment_codes[21]=0b11111001;
segment_codes[22]=0b11000000;
segment_codes[23]=0b10100011;
segment_codes[24]=0b10001100;
segment_codes[25]=0b10010010;
segment_codes[26]=0b11111111;


pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}

void loop() {
show("12.345.678");
}
 
Odpowiedź
#15
Teraz zrobiłem tak na LCD z i2C. Na monitorze mi chodzi, nie sprawdzę na LCD bo nie mam. Sad Nie wiem czy w Bytomiu będzie gdzieś można kupić. Co dokupić do płytek Arduino Uno i Leonardo? I płytki stykowej oraz przewodów?

Kod:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16,2);  
#define BUTTON1_PIN 2
#define BUTTON2_PIN 3

int x = 0;

void setup() {
 
 pinMode(BUTTON1_PIN, INPUT_PULLUP);
 pinMode(BUTTON2_PIN, INPUT_PULLUP);  
  pinMode(A4, INPUT); 
  pinMode(A5, INPUT); 
 Serial.begin(9600);

 lcd.begin();  
 lcd.backlight(); // zalaczenie podwietlenia  
 lcd.print("Wartosc zmiennej: ");
 lcd.print(x);  
                 
}
void loop() {
 
   if (digitalRead(BUTTON1_PIN) == LOW) {
   while (digitalRead(BUTTON1_PIN) == LOW) {}
   x++;
   
   Serial.print("Dodawanie:    ");
   Serial.print("Wartość zmiennej: ");
   Serial.println(x);
   delay(200);
 }

 if (digitalRead(BUTTON2_PIN) == LOW) {
   while (digitalRead(BUTTON2_PIN) == LOW) {}
   x--;

   Serial.print("Odejmowanie:  ");
   Serial.print("Wartość zmiennej: ");
   Serial.println(x);
   delay(200);
 }

}
Kupiłem  konwerter  i2C  i  wyświetlacz.  Jak sprawdzam  adres  i2C Scanerem  to wyświetla found! addr:64 i done pod spodem. Teraz bym musiał ustawić piny analogowe A5 i A4?  #define pin A5
#define pin A4
 
Odpowiedź
#16
Program do poprawienia. Co by zmienić aby go odchudzić? I jak zrobić żeby  wynik wyświetlany był 00.00? Po 99 wskakiwała 1 . Np. 00.99 , 01.00, 01.01, 01.02..... Chce dołączyć te funkcje do mojego programu. Zamiast int x=0 można zapisać word x=0? To wtedy nie wejdzie na minus bez ustawiania zakresu?
Kod:
// Bibloteki

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,16,2);

//Definiowanie pinów Arduino Uno

#define BUTTON1_PIN 2
#define BUTTON2_PIN 3
#define BUTTON3_PIN 4
#define BUTTON4_PIN 5

//Definiowanie zmiennej x

int x = 0;

void setup() {
 
 pinMode(BUTTON1_PIN, INPUT_PULLUP);
 pinMode(BUTTON2_PIN, INPUT_PULLUP);
 pinMode(BUTTON3_PIN, INPUT_PULLUP);
 pinMode(BUTTON4_PIN, INPUT_PULLUP);

 Serial.begin(9600);
 
 lcd.init();                    
 lcd.clear();// czyszczenie ekranu
 
 // Wyświetl wiadomość na wyświetlaczu LCD.
 
 lcd.backlight();//Zapalanie podświetlenia
 lcd.setCursor(0,0);// Ustawienie kursora na pierwszej lini i lewej stronie ekranu LCD
 lcd.print("Licznik:    0000");//Wyświetlenie Licznik:    0000 na LCD    
           
}
void loop() {

// Dodawanie + 1

   if (digitalRead(BUTTON1_PIN) == LOW) {
   while (digitalRead(BUTTON1_PIN) == HIGH) {}
   x++;

  // Ustawienie zakresu od 0 do 9999
   x = constrain (x, 0, 9999);

delay(100);

   Serial.print("Dodawanie:    ");
   Serial.print("Wartość zmiennej: ");
   Serial.println(x);
   
   lcd.clear();
   lcd.setCursor(0,0);
   lcd.print("+ 1 :Suma:  0000");
   lcd.setCursor(15,0);
   if (x>9)  lcd.setCursor(14,0);
   if (x>99)  lcd.setCursor(13,0);
   if (x>999)  lcd.setCursor(12,0);
   lcd.print(x);  

   lcd.setCursor(0,1);  
   lcd.print("    RONIN &      ");  
                 
   delay(100);
 }
 
//Odejmowanie - 1

 if (digitalRead(BUTTON2_PIN) == LOW) {
   while (digitalRead(BUTTON2_PIN) == HIGH) {}
   x--;
 
  // Ustawienie zakresu od 0 do 9999
   x = constrain (x, 0, 9999);
   
   Serial.print("Odejmowanie:  ");
   Serial.print("Wartość zmiennej: ");
   Serial.println(x);
   
   lcd.clear();
   lcd.setCursor(0,0);
   lcd.print("- 1 :Suma:  0000");
   lcd.setCursor(15,0);
   if (x>9)  lcd.setCursor(14,0);
   if (x>99)  lcd.setCursor(13,0);
   if (x>999)  lcd.setCursor(12,0);
   lcd.print(x);  
     
   lcd.setCursor(0,1);  
   lcd.print("   ELEKTRODA");    
               
   delay(100);
 }

//Dodawanie + 10

  if (digitalRead(BUTTON3_PIN) == LOW) {
   while (digitalRead(BUTTON3_PIN) == HIGH) {}
   x+=10;
   
  // Ustawienie zakresu od 0 do 9999
   x = constrain (x, 0, 9999);
   
   Serial.print("Dodawanie:    ");
   Serial.print("Wartość zmiennej: ");
   Serial.println(x);
   
   lcd.clear();
   lcd.setCursor(0,0);
   lcd.print("+ 10:Suma:  0000");
   lcd.setCursor(14,0);
   if (x<=9) lcd.setCursor(15,0);
   if (x>9)  lcd.setCursor(14,0);
   if (x>99)  lcd.setCursor(13,0);
   if (x>999)  lcd.setCursor(12,0);
   lcd.print(x);  
 
   lcd.setCursor(0,1);  
   lcd.print("    RONIN &  ");  
                 
   delay(100);
}

//Odejmowanie - 10

  if (digitalRead(BUTTON4_PIN) == LOW) {
   while (digitalRead(BUTTON4_PIN) == HIGH) {}
   x-=10;
   
   
  // Ustawienie zakresu od 0 do 9999
   x = constrain (x, 0, 9999);
 
   Serial.print("Odejmowanie:    ");
   Serial.print("Wartość zmiennej: ");
   Serial.println(x);
   
   lcd.clear();
   lcd.setCursor(0,0);
   lcd.print("- 10:Suma:  0000");
   lcd.setCursor(15,0);
   if (x>9)  lcd.setCursor(14,0);
   if (x>99)  lcd.setCursor(13,0);
   if (x>999)  lcd.setCursor(12,0);
   lcd.print(x);  
       
   lcd.setCursor(0,1);  
   lcd.print("    ELEKTRODA");                      
                 
   delay(100);
}
}//Koniec
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości