temperatuur op 4x7 digit scherm weergeven
7 berichten
• Pagina 1 van 1
- jeffrey430
- Berichten: 4
- Geregistreerd: 16 Okt 2015, 18:36
temperatuur op 4x7 digit scherm weergeven
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
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
- jeffrey430
- Berichten: 4
- Geregistreerd: 16 Okt 2015, 18:36
Re: temperatuur op 4x7 digit scherm weergeven
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
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
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: temperatuur op 4x7 digit scherm weergeven
eerst maar eens leesbaarder maken:
cpp code
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);
}
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: temperatuur op 4x7 digit scherm weergeven
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.
Re: temperatuur op 4x7 digit scherm weergeven
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.
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
shooter@home.nl
- jeffrey430
- Berichten: 4
- Geregistreerd: 16 Okt 2015, 18:36
Re: temperatuur op 4x7 digit scherm weergeven
http://www.miniinthebox.com/nl/compatib ... 88932.html
deze heb ik, in de beschrijving staat dat het een common anode is
deze heb ik, in de beschrijving staat dat het een common anode is
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: temperatuur op 4x7 digit scherm weergeven
Het type nummer geeft aan common kathode....
7 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 44 gasten