Stap 11: Codering - instellingenmenu
voor instelling wordt menuknoppen 2 en 1 knop gebruikt.
Knop 1:
Lang indrukken om te Enter / menu te verlaten
Kort indrukken voor volgende menu-item
Knop (potentiometer):
Draaien voor gewenste waarde van 0-100
Knop 2:
Slaat potentiometer ingestelde waarde als de nieuwe waarde van de instelling in de EEPROM van Atmega328
de code van de knoppen vanaf hier:
Hier is de code voor het:
INSTELLINGENMENU *** / /
ongeldig menu() {}
schakelaar (ModeCount) {/ / modecount is een korte druk op de knop - hoeveel tijd ingedrukt = menu item nummer
geval 1: / / thermostaat voor pc behuizing
Als (Mode_firsttime == true) {/ / zodat het dosent ontelbare keren maar eenmalig lussen
Mode_firsttime = false;
''' waarde opgeslagen in het rom lezen '''/ /
LCD.Clear();
lcd.setCursor (0, 0);
LCD.Print (F ("CPU-ventilator:"));
LCD.Print(EEPROM.Read(EEPthermostat));
LCD.Print (F("C"));
} / / end als modus firsttime
''' vernieuwen na 0.5 seconden '''/ /
Als (GPcurrenttime - prev_setting_display > = 500) {/ / 500 ms - 0,5 sec
prev_setting_display = GPcurrenttime;
''' lezen, instellen van de waarde van de Pot en lcd afdrukken als gewijzigd ten opzichte van eerdere '''/ /
settingpotfunc(); Functie leest de waarde van de pot van de instelling
lcdnewvalue(); Hiermee wist u de onderste rij en pot waarde wordt weergegeven
''' Knop wordt opgeslagen in EEProm'' ' / /
Als (potButtoncount == 1) {}
EEPROM.write (EEPthermostat, potvalue);
newvalueset(); Hiermee wist u de lcd en geeft nieuwe ingestelde waarde
Mode_firsttime = true; teml te herlezen eeprom voor laatste waarde
potButtoncount = 0;
} / / end als pot knop 1
} / / end timer als
breken; geval 1
//````````````````````THE END ``````````````````````````````````````//
***************************************************************************************************
OK nu ondergaat whats pot en LCD-nieuwe functie waarde:
kleine hulpverlenende functies
********************/
/ *** pot instelling sparen knoop *** / /
ongeldig potButtons() {}
omdat het op Pin X5 (van 4015, schakelen we over gates (S0 2) volgens gegevensblad tabel selecteren die ingang
PORTC = B00001010; analoge pinnen A1 hoog ingesteld
vertraging (5);
Serial.Print("potbutton");
Serial.println(potButtoncount);
int potButton = digitalRead(SensorsInput);
Als (potButton! = potButtonstate) {}
Als (potButton == HIGH) {}
potButtoncount ++;
Als (potButtoncount > = 2) {}
potButtoncount = 0;
}
}
delay(50); om te voorkomen dat de knop stuitert
}
potButtonstate = potButton;
}
De volumeknop waarden instellen ***
ongeldig settingpotfunc() {}
omdat het op Pin X1 (van 4015, schakelen we over gates (S0 naar 2) naar het gegevensblad tabel selecteren die ingang
PORTC = B00000010; analoge pinnen A1 hoog ingesteld
vertraging (5);
''' Lees en glad '''/
byte junkreads = analogRead(SensorsInput);
potvalue = map(analogRead(SensorsInput), 0, 0, 850 102);
} / / void einde
ongeldig lcdnewvalue() {}
lcd.setCursor (0, 1);
LCD.Print("");
lcd.setCursor (0, 1);
LCD.Print ("New?:");
LCD.Print(potvalue);
vertraging (50);
} / / void einde
ongeldig newvalueset() {}
lcd.setCursor (0, 1);
LCD.Print("");
lcd.setCursor (0, 1);
LCD.Print ("nieuwe waarde SET!");
vertraging (500);
lcd.setCursor (0, 1);
LCD.Print("");
}