Sparrow - my assistant (11 / 14 steg)
Steg 11: Kodning - menyn
meny 2 knappar och 1 ratten används för inställningen.
Knapp 1:
Tryck länge på att RETUR / avsluta meny
Kort tryck för nästa menyalternativ
Knopp (potentiometer):
Rotera för önskat värde från 0-100
Knapp 2:
Sparar potentiometer inställt värde som nya värdet på inställningen i EEPROM av Atmega328
knappar koden från här:
Här är koden för det:
INSTÄLLNINGAR-MENYN *** / /
void menu() {
växel (ModeCount) {/ / modecount är kort knapptryckning - hur många gången tryckte = menyn artikelnummer
fall 1: / / termostat för pc fall
om (Mode_firsttime == true) {/ / så det dosent loopar otaliga gånger men bara en gång
Mode_firsttime = false;
''' läsa värdet som lagras i rom '''/ /
LCD.Clear();
lcd.setCursor (0, 0);
LCD.Print (F ("CPU Fan:"));
LCD.Print(EEPROM.Read(EEPthermostat));
LCD.Print (F("C"));
} / / end om läge firsttime
''' Uppdatera efter 0,5 sekunder '''/ /
om (GPcurrenttime - prev_setting_display > = 500) {/ / 500 ms - 0.5 sek
prev_setting_display = GPcurrenttime;
''' Läs potten värde och LCD-skriva ut om ändrat från tidigare '''/ /
settingpotfunc(); Funktionen läser potten inställningsvärde
lcdnewvalue(); rensar nedersta raden och visar potten värde
''' Buttton sparar i EEProm'' ' / /
om (potButtoncount == 1) {
EEPROM.write (EEPthermostat, potvalue);
newvalueset(); Clear lcd och visar nya värde som
Mode_firsttime = sant; teml att läsa eeprom för senaste värde
potButtoncount = 0;
} / / end om potten knappen är 1
} / / end timer om
bryta; fall 1
//````````````````````THE END ``````````````````````````````````````//
***************************************************************************************************
OK är nu whats att potten och LCD-nya värde funktion:
små biträdande funktioner
********************/
/ *** pot inställningen knappen Spara *** / /
void potButtons() {
eftersom det är på stift X5 (av 4015, vi kommer att byta gates (S0 2) datablad tabell att välja dessa indata
PORTC = B00001010; ställer in analoga pins A1 hög
fördröjning (5).
Serial.Print("potbutton");
Serial.println(potButtoncount);
int potButton = digitalRead(SensorsInput);
om (potButton! = potButtonstate) {
om (potButton == hög) {
potButtoncount ++;
om (potButtoncount > = 2) {
potButtoncount = 0;
}
}
Delay(50); för att undvika knappen studsar
}
potButtonstate = potButton;
}
Volymknappen ange värden ***
void settingpotfunc() {
eftersom det är på stift X1 (av 4015, vi kommer att byta gates (S0 till 2) enligt de datablad bord att välja dessa indata
PORTC = B00000010; ställer in analoga pins A1 hög
fördröjning (5).
''' Läs och smidig '''/
byte junkreads = analogRead(SensorsInput);
potvalue = map(analogRead(SensorsInput), 850-0, 0, 102);
} / / Annullera slutet
void lcdnewvalue() {
lcd.setCursor (0, 1);
LCD.Print("");
lcd.setCursor (0, 1);
LCD.Print ("New?:");
LCD.Print(potvalue);
fördröjning (50);
} / / Annullera slutet
void newvalueset() {
lcd.setCursor (0, 1);
LCD.Print("");
lcd.setCursor (0, 1);
LCD.Print ("nytt värde SET!");
fördröjning (500).
lcd.setCursor (0, 1);
LCD.Print("");
}