***************************** *** Datei parameter.h ******* ***************************** // steuernde Parameter enum { laufzeit = 0, sollrpm, motor_aus, motor_max, motor_anlauf_anf, motor_anlauf_end, anlaufzeit, pole, messzeit, rpm_status, maxpar, }; int par[] = { 15, // laufzeit 5000, // sollrpm 1000, // motor_aus 2000, // motor_max 1100, // motor_anlauf_anf 1200, // motor_anlauf_end 1500, // anlaufzeit 12, // pole 200, // messzeit 1, // rpm_regelung }; int minwert[] = {15,4000,1000,1000,1000,1000,100,2,10,0,}; int maxwert[] = {900,20000,2000,2000,2000,2000,2000,36,500,2,}; int schritt[] = {5,20,10,10,10,10,10,2,5,1,}; char* einheit[] ={"sek","rpm","usek","usek","usek","usek","usek"," ","usek"," ",}; char* text [] = { "Laufzeit:", "Drehzahl:", "Motor min:", "Motor max:", "Anlauf anf:", "Anlauf end:", "Anlaufzeit:", "Pole:", "Messzeit:", "rpm Regelung:" }; // Initiales Schreiben des EEPROMS gesteuert über #define <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< void schreiben_eeprom() { for (int i=0; i // Bibliothek für Servoansteuerung #include // Bibliothek für EEPROM Nutzung #include "JetiExProtocol.h" // Bibliothek für Jeti-Protokoll JetiExProtocol jetiEx; enum { ID_RPM = 1, ID_ZEIT, ID_LEV, ID_SIND, }; JETISENSOR_CONST sensors[] PROGMEM = { // id name unit data type precision 0->0, 1->0.0, 2->0.00 {ID_RPM, "Drehzahl", "rpm ", JetiSensor::TYPE_14b, 0 }, {ID_ZEIT, "Zeit", "rpm ", JetiSensor::TYPE_14b, 0 }, {ID_LEV, "Lev", " ", JetiSensor::TYPE_14b, 0 }, {ID_SIND, "Ind", " ", JetiSensor::TYPE_14b, 0 }, 0 // end of array }; **********************schnipp*************************** int jeti_rpm; // rpm für EX Protokoll int jb_level; // Level für Jetibox Ein-/Ausgabe const int jb_maxlevel=maxpar+2; // maximale Anzahl Jetibox Bildchen static char zeile[17]; // für Aufbereitung Sensorwerte EX-Protokoll char hife [17]; // Hilfsfeld für Aufbereitung zeil // Einmalaufgaben zu Anfang <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< void setup() { pinMode (pin_rpm, INPUT); pinMode (pin_empf, INPUT); sig_regler.attach(pin_regler, par[motor_aus], par[motor_max]); sig_regler.writeMicroseconds( par[motor_aus]); //Serial.begin(9600); // nur füg Diagnosezwecke attachInterrupt(0,rpm_IR,CHANGE); // Interrupt 1 für rpm-Messung #ifdef eeprom_schreiben schreiben_eeprom(); #endif lesen_eeprom(); jetiEx.Start("FFS4", sensors ); jetiEx.Start( NULL, NULL, JetiExProtocol::SERIAL2 ); jetiEx.SetJetiboxText( JetiExProtocol::LINE1, "FFS4" ); jetiEx.SetJetiboxText( JetiExProtocol::LINE2, "HE FW V1" ); p_status = p_warten; // los geh's mit warten Empfängersignal Motor aus jb_level = 1; } //end setup **********************schnipp*************************** // Jebibox Eingabe <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< void jetibox_eingabe() { uint8_t in_key = jetiEx.GetJetiboxKey(); switch (in_key) { case 0: return; break; // erforderlich??? case 0xb0: // = runter ++jb_level; if (jb_level>jb_maxlevel) jb_level = 3; // Parameter da capo break; case 0xd0: // = rauf --jb_level; if (jb_level < 0) jb_level = jb_maxlevel; break; case 0xe0: // = rechts jetibox_wert(1); break; case 0x70: // = links jetibox_wert(-1); break; default: ; // Rest gibt es nicht } // end switch } // end jetibox_eingabe // Jetibox Ausgabe <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< void jetibox_ausgabe() { int i; int i2; switch (jb_level) { case 0: jetiEx.SetJetiboxText( JetiExProtocol::LINE1, "FFS4" ); jetiEx.SetJetiboxText( JetiExProtocol::LINE2, "HE FW V1" ); break; case 1: dtostrf(rpm,5,0,hife); sprintf(zeile, "Drehz. %s rpm", hife); jetiEx.SetJetiboxText(JetiExProtocol::LINE1,zeile); sek_rest = par[laufzeit] - sek_lauf; sprintf(zeile, "Zeit: %3i sek", sek_rest); jetiEx.SetJetiboxText(JetiExProtocol::LINE2,zeile); break; case 2: sprintf (zeile, "Ueberlast: %1i ", f_ueberlast); jetiEx.SetJetiboxText(JetiExProtocol::LINE1,zeile); sprintf (zeile, "Notstopp: %1i ", f_notstop); jetiEx.SetJetiboxText(JetiExProtocol::LINE2,zeile); break; case 3 ... jb_maxlevel: // 3 bis 12 i = jb_level - 3; // i auf 0 = erster Parameter jetiEx.SetJetiboxText( JetiExProtocol::LINE1,text[i] ); String spf_par = String("< " + String(par[i],DEC) + " " + einheit[i] + " >"); for (i2=0; i2<16; i2++) { zeile[i2] = spf_par[i2]; zeile[i2+1] = '\0'; } // end for jetiEx.SetJetiboxText(JetiExProtocol::LINE2,zeile); break; default: ; // mehr gibt's nicht } // end switch } // end jetibox_ausgabe // Jetibox Wert ändern <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< void jetibox_wert(int faktor) { int i; switch (jb_level) { case 3 ... jb_maxlevel: i = jb_level - 3; // i auf 0 = erster Parameter par[i] = par[i] + (faktor * schritt[i]); if ( par[i] < minwert[i] ) par[i] = minwert[i]; if ( par[i] > maxwert[i] ) par[i] = maxwert[i]; jetiEx.SetSensorValue(ID_LEV, jb_level); jetiEx.SetSensorValue(ID_SIND,i); EEPROM.put(i * 2, par[i]); break; default: ; // nix tun } // end switch } // end jetibox_plus