Inhalt
- Piezo-Piepser ansteuern
- Float-Variable in einzelne Bytes konvertieren
- Durchschnittsbildung bei Integer
Hier sammle ich interessante Codeschnippsel für meine Projekte.
Piezo-Piepser ansteuern
/********************************************************************************* * Generates a sound with the Piezo Buzzer connected to Port B.5 (Mega 128) or Port D.5 (Mega 32) * The parameter "pitch" sets the frequency and "time" the * duration of the sound * "pause" can be used to add a small delay before the next command is executed. * This is useful for playing melodies.
* * This function blocks the program flow for time+pause Milliseconds. *********************************************************************************/ void beep(byte pitch, byte time, byte pause Timer_T1FRQ(pitch, PS_64); AbsDelay(time); Timer_T1Stop(); AbsDelay(pause);
/********************************************************************************* * This function does the same as "beep", but it does NOT block further * program flow and does not add a delay. It only sets the sound frequency and * exits. This is useful for continous operation or . ********************************************************************************/ void sound(byte pitch) Timer_T1FRQ(pitch, PS_64); } void sound_off(void) { Timer_T1Stop(); }
Float-Variable in einzelne Bytes konvertieren
Für das Speichern von Floats in RAM oder EEPROM, müssen die Werte als Bytefolgen vorliegen.
void float2byte(byte in[]) { Msg_WriteHex(in[3]); Msg_WriteChar('\r'); // 0x43 Msg_WriteHex(in[2]); Msg_WriteChar('\r'); // 0x6A Msg_WriteHex(in[1]); Msg_WriteChar('\r'); // 0x1F Msg_WriteHex(in[0]); Msg_WriteChar('\r'); // 0xD6 } void main(void) { float val[1]; val[0]= 234.1243555; float2byte(val); }
Durchschnittsbildung bei Integer
Aus mehreren Integer-Zahlen soll ein Durchschnittswert gebildet werden, der als Ergebnis wieder einer Integer-Variablen zugwiesen werden soll. Die Summierung muss über Float erfolgen (Zahlenbereich).
void main(void) { float fval; int iarray[10]; int ierg iarray[0]=27000; iarray[1]=27012; iarray[2]=26488; iarray[3]=27071; iarray[4]=27000; iarray[5]=22994 iarray[6]=27030; iarray[7]=26002; iarray[8]=27780; iarray[9]=27000; fval=0; for(i=0;i<10;i++) { fval = fval + iarray[i]; } ierg=fval/10; Msg_WriteInt(ierg); Msg_WriteChar('\r'); // Ergibt: 26537 }