temperatuur op 4x7 digit scherm weergeven

Projecten die niet passen in bovenstaande onderwerpen
Berichten: 4
Geregistreerd: 16 Okt 2015, 18:36

temperatuur op 4x7 digit scherm weergeven

Berichtdoor jeffrey430 » 17 Okt 2015, 19:04

hallo mensen,

ik heb een probleem.

ik ben vandaag aan een project van internet begonnen heb alles gemaakt volgens tekening.

maar nu blijft de 4x7 digit scherm alle lampjes branden.

ik heb een 12 pins scherm met common anode ik heb verder alles gebruikt wat de bedenker heeft vermeldt.

kan iemand mij helpen hieronder staat de link.

http://duino4projects.com/temperature-d ... g-arduino/

jeffrey

Advertisement

Berichten: 4
Geregistreerd: 16 Okt 2015, 18:36

Re: temperatuur op 4x7 digit scherm weergeven

Berichtdoor jeffrey430 » 17 Okt 2015, 22:58

const int digitPins[4] = {
4,5,6,7}; //4 common anode pins of the display
const int clockPin = 11; //74HC595 Pin 11
const int latchPin = 12; //74HC595 Pin 12
const int dataPin = 13; //74HC595 Pin 14
const int tempPin = A0; //temperature sensor pin
const byte digit[10] = //seven segment digits in bits
{
B00111111, //0
B00000110, //1
B01011011, //2
B01001111, //3
B01100110, //4
B01101101, //5
B01111101, //6
B00000111, //7
B01111111, //8
B01101111 //9
};
int digitBuffer[4] = {
0};
int digitScan = 0, flag=0, soft_scaler = 0;
;
float tempK, tempC, tempF, temp;

void setup(){
for(int i=0;i<4;i++)
{
pinMode(digitPins[i],OUTPUT);
}
pinMode(tempPin, INPUT);
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}

//writes the temperature on display
void updateDisp(){
for(byte j=0; j<4; j++)
digitalWrite(digitPins[j], LOW);

digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, B11111111);
digitalWrite(latchPin, HIGH);

delayMicroseconds(10000);
digitalWrite(digitPins[digitScan], HIGH);

digitalWrite(latchPin, LOW);
if(digitScan==2)
shiftOut(dataPin, clockPin, MSBFIRST, ~(digit[digitBuffer[digitScan]] | B10000000)); //print the decimal point on the 3rd digit
else
shiftOut(dataPin, clockPin, MSBFIRST, ~digit[digitBuffer[digitScan]]);

digitalWrite(latchPin, HIGH);
digitScan++;
if(digitScan>3) digitScan=0;
}

void loop(){
tempK = (((analogRead(tempPin)/ 1023.0) * 5.0) * 100.0);
//Converts Kelvin to Celsius minus 2.5 degrees error
tempC = tempK - 273.0;
tempF = ((tempK - 2.5) * 9 / 5) - 459.67;
//Celsius temperature display
tempC = int(tempC*100);
digitBuffer[3] = int(tempC)/1000;
digitBuffer[2] = (int(tempC)%1000)/100;
digitBuffer[1] = (int(tempC)%100)/10;
digitBuffer[0] = (int(tempC)%100)%10;
updateDisp();
delay(2);
}

dit is de code

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: temperatuur op 4x7 digit scherm weergeven

Berichtdoor nicoverduin » 19 Okt 2015, 07:36

eerst maar eens leesbaarder maken:

cpp code
const int digitPins[4] = { 4, 5, 6, 7 }; //4 common anode pins of the display
const int clockPin = 11; //74HC595 Pin 11
const int latchPin = 12; //74HC595 Pin 12
const int dataPin = 13; //74HC595 Pin 14
const int tempPin = A0; //temperature sensor pin
const byte digit[10] = //seven segment digits in bits
{ B00111111, //0
B00000110, //1
B01011011, //2
B01001111, //3
B01100110, //4
B01101101, //5
B01111101, //6
B00000111, //7
B01111111, //8
B01101111 //9
};
int digitBuffer[4] = { 0 };
int digitScan = 0, flag = 0, soft_scaler = 0;
;
float tempK, tempC, tempF, temp;

void setup() {
for (int i = 0; i < 4; i++) {
pinMode(digitPins[i], OUTPUT);
}
pinMode(tempPin, INPUT);
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}

//writes the temperature on display
void updateDisp() {
for (byte j = 0; j < 4; j++)
digitalWrite(digitPins[j], LOW);

digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, B11111111);
digitalWrite(latchPin, HIGH);

delayMicroseconds(10000);
digitalWrite(digitPins[digitScan], HIGH);

digitalWrite(latchPin, LOW);
if (digitScan == 2)
shiftOut(dataPin, clockPin, MSBFIRST,
~(digit[digitBuffer[digitScan]] | B10000000)); //print the decimal point on the 3rd digit
else
shiftOut(dataPin, clockPin, MSBFIRST, ~digit[digitBuffer[digitScan]]);

digitalWrite(latchPin, HIGH);
digitScan++;
if (digitScan > 3)
digitScan = 0;
}

void loop() {
tempK = (((analogRead(tempPin) / 1023.0) * 5.0) * 100.0);
//Converts Kelvin to Celsius minus 2.5 degrees error
tempC = tempK - 273.0;
tempF = ((tempK - 2.5) * 9 / 5) - 459.67;
//Celsius temperature display
tempC = int(tempC * 100);
digitBuffer[3] = int(tempC) / 1000;
digitBuffer[2] = (int(tempC) % 1000) / 100;
digitBuffer[1] = (int(tempC) % 100) / 10;
digitBuffer[0] = (int(tempC) % 100) % 10;
updateDisp();
delay(2);
}
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: temperatuur op 4x7 digit scherm weergeven

Berichtdoor nicoverduin » 19 Okt 2015, 07:40

Weet je zeker dat je een common anode display hebt? geef de link anders waar je hem hebt gekocht. Je zal niet de eerste zijn die achteraf toch een andere heeft.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: temperatuur op 4x7 digit scherm weergeven

Berichtdoor shooter » 19 Okt 2015, 09:38

ook hier weer dat er door de anode veel stroom gaat lopen, namelijk 8 maal de stroom door 1 ledje, en dat is erg veel voor een arduinopoort.
beter andersom dus de segmenten (8) op de pinnen en de anodes naar de 595 (die kan wat meer hebben)
en ja ik geef nico een keer gelijk geef het type maar, want van het schema klopt niet veel hoor.
paul deelen
shooter@home.nl

Berichten: 4
Geregistreerd: 16 Okt 2015, 18:36

Re: temperatuur op 4x7 digit scherm weergeven

Berichtdoor jeffrey430 » 19 Okt 2015, 17:55

http://www.miniinthebox.com/nl/compatib ... 88932.html

deze heb ik, in de beschrijving staat dat het een common anode is

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: temperatuur op 4x7 digit scherm weergeven

Berichtdoor nicoverduin » 19 Okt 2015, 20:30

Het type nummer geeft aan common kathode....
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 44 gasten