#define pinLatch 4
#define pinClk 7
#define pinData 8
byte cislice = 3;
int pamet = 0;
#define led1 13
#define led2 12
#define led3 11
#define led4 10
#define sviti 0
#define nesviti 1
#define tlacitko1 A1
#define tlacitko2 A2
#define tlacitko3 A3
#define fotorezistor A4
#define trimr A0
#define piezo 3
int hodnota;
void setup() {
Serial.begin(9600);
pinMode(pinLatch, OUTPUT);
pinMode(pinClk, OUTPUT);
pinMode(pinData, OUTPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(tlacitko1, INPUT_PULLUP);
pinMode(tlacitko2, INPUT_PULLUP);
pinMode(tlacitko3, INPUT_PULLUP);
pinMode(fotorezistor, INPUT);
}
void loop() {
if (!digitalRead(tlacitko1)==1){
digitalWrite(led1,sviti);
tone(piezo,1000);
} else {
digitalWrite(led1,nesviti);
noTone(3);
}
if (!digitalRead(tlacitko2)==1){
digitalWrite(led2,sviti);
} else {
digitalWrite(led2,nesviti);
}
if (!digitalRead(tlacitko3)==1){
digitalWrite(led3,sviti);
} else {
digitalWrite(led3,nesviti);
}
if (digitalRead(fotorezistor)==1){
digitalWrite(led4,sviti);
} else {
digitalWrite(led4,nesviti);
}
pamet=analogRead(fotorezistor);
Serial.print("Fotorezistor: ");
Serial.println(pamet);
zapisCisloNaSegment(pamet);
// put your main code here, to run repeatedly:
}
void zapisCisloNaSegment(int hodnota) {
// mapa čísel pro segmentový displej - čísla 0 až 9
const byte mapaSegment[] = { 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0X80, 0X90 };
switch (cislice--) {
case 1:
digitalWrite(pinLatch, LOW);
shiftOut(pinData, pinClk, MSBFIRST, mapaSegment[hodnota / 1000]);
shiftOut(pinData, pinClk, MSBFIRST, 0xF1);
digitalWrite(pinLatch, HIGH);
break;
case 2:
digitalWrite(pinLatch, LOW);
shiftOut(pinData, pinClk, MSBFIRST, mapaSegment[((hodnota / 100) % 10)]);
shiftOut(pinData, pinClk, MSBFIRST, 0xF2);
digitalWrite(pinLatch, HIGH);
break;
case 3:
digitalWrite(pinLatch, LOW);
shiftOut(pinData, pinClk, MSBFIRST, mapaSegment[(hodnota / 10) % 10]);
shiftOut(pinData, pinClk, MSBFIRST, 0xF4);
digitalWrite(pinLatch, HIGH);
break;
default:
digitalWrite(pinLatch, LOW);
shiftOut(pinData, pinClk, MSBFIRST, mapaSegment[hodnota % 10]);
shiftOut(pinData, pinClk, MSBFIRST, 0xF8);
digitalWrite(pinLatch, HIGH);
cislice = 3;
}
}