potřeboval bych poradit s níže uvedeným měřením teploty.
Pomocí klonu Arduino nano, termočlánku s MAX6675 a 4 segmentovým led displejem měřím teplotu. Vše mám zabudované v krabičce a přes spínač napájeno 9V baterií. Když Arduino připojím USB kabelem k počítači, tak to funguje a normálně měří (baterie je odpojená). Pokud to ale napájím z baterie (USB odpojeno), Rozsvítí se na displeji jen symbol stupně a neměří. Můžete mi prosím poradit, čím by to mohlo být?
Kód: Vybrat vše
// Termočlánek + driver MAX6675
// připojení knihovny
#include<max6675.h>
//
//// nastavení propojovacích pinů termočlánku
int pinSO = 6;
int pinCS = 7;
int pinSCK = 8;
//nastavení LED displeje
#define SCLK 5
#define RCLK 4
#define DIO 3
// vytvoření instance termoclanek z knihovny MAX6675
MAX6675 termoclanek(pinSCK,pinCS,pinSO);
byte digitBuffer[4];
byte znak = 0;
int zpozdeni = 0;
int cislovka1 = 0;
int cislovka2 = 0;
int cislovka3 = 0;
void setup(){
pinMode(RCLK, OUTPUT);
pinMode(SCLK, OUTPUT);
pinMode(DIO, OUTPUT);
//Serial.begin(9600);
//Serial.println("Zahájení ovládání");
digitBuffer[0] = 12;
digitBuffer[1] = 12;
digitBuffer[2] = 12;
digitBuffer[3] = 11;
showDisplay();
delay(3000);
}
void loop(){
while (zpozdeni < 1000){
showDisplay();
zpozdeni++;
}
znak = termoclanek.readCelsius();
//Serial.print("Teplota: ");
//Serial.print(znak);
//Serial.println("°C");
delay(10);
if (znak < 100){
cislovka1 = 10;
cislovka2 = znak/10;
cislovka3 = znak%10;
}
else{
cislovka1 = znak/100;
cislovka2 = (znak%100)/10;
cislovka3 = znak%10;
}
digitBuffer[0] = cislovka1;
digitBuffer[1] = cislovka2;
digitBuffer[2] = cislovka3;
digitBuffer[3] = 11;
showDisplay();
zpozdeni = 0;
}
void showDisplay(){
const byte digit[13] = {
// a
// f b
// g
// e c
// d t
//
//tgfedcba
0b11000000, //0
0b11111001, //1
0b10100100, //2
0b10110000, //3
0b10011001, //4
0b10010010, //5
0b10000010, //6
0b11111000, //7
0b10000000, //8
0b10010000, //9
0b11111111, //10 - zhasnuto
0b10011100, //11 - stupeň
0b10111111 //12 - pomlcka
};
const byte chr[4] = {
0b00001000,
0b00000100,
0b00000010,
0b00000001
};
for(byte i = 0; i <= 3; i++){
digitalWrite(RCLK, LOW);
shiftOut(DIO, SCLK, MSBFIRST, digit[digitBuffer[i]]);
shiftOut(DIO, SCLK, MSBFIRST, chr[i]);
digitalWrite(RCLK, HIGH);
delay(1);
}
}