Nic, ten tlačítkovej blázinec, u kterýho není zřejmý co je vlastně nastavenýho, s pochybným ukládáním na EEprom jsem opustil a napsal jsem pár řádků, co se vejde do ATtiny25 za 3 pětky. Maká to podle přepínače BCD, hned je vidět co je nastavený a žádný blbnutí s EEPROM. Kromě ATtiny, BCD-čka, spínacího Feta, 100mA stabilu a dvou elytů tam není nic potřeba.
Kód: Vybrat vše
// řízení pájky přes PWM pomocí BCD přepínače na ATtiny25
// vstup PB, bit0-3 na pinech 0,1,2,3 proti GND
// výstup PWM na pinu 4
byte pwm = 0;
const int pwmPin = 4;
void setup()
{
// nastavení PullUp na PB0-PB3
for (int i = 0; i < 4; i++)
{
pinMode(i, INPUT_PULLUP);
}
//PORTB (digital 3-0) výstup
DDRB = 0b11110000;
}
void loop()
{
// Přečti BCD kód ze vstupních pinů a maskuj jen PB0-PB3
byte bcdCode = PINB & 0b00001111;
// inverze přepínače
bcdCode = bcdCode ^ 0b00001111;
if (bcdCode > 0){
// na BCD přepínači je > 0, sestav PWM
// (BCD min, BCD max, PWM min, PWM max)
pwm = map(bcdCode, 0,9, 160, 255);
}
else { pwm = 0; } // BCD je na nule vypnout pájku
analogWrite(pwmPin, pwm);
delay (100);
}
Ten tlačítkáč byl proti tomu 10 x delší monstrum. Maká, není co dál řešit.