void goto_on_if_password(){ if(checkPassword()) { next_alarmState = wait_on; set_lcd("wait_on", ""); wait_on_timer.reset(); } }
void loop(){ if (delayInactif.check()) { stateProgram = NORMAL; clearBuffers(); Serial.println("raz"); } char key = keypad.getKey(); if (key != NO_KEY){ delayInactif.reset(); delay(100); switch (key){ case 'A': case 'B': case 'C': case 'D': break; case '#': // reset pwd if (stateProgram == NORMAL) { chaineReset(&pwd_buffer); } else { modifyPwd(key); } break; case '*': // check pwd if (stateProgram == NORMAL) { checkPwd(); chaineReset(&pwd_buffer); } else { modifyPwd(key); } break; default: //append to buffer if (stateProgram == NORMAL) { chaineAppend(key, &pwd_buffer); chainePrint(pwd_buffer); } else { modifyPwd(key); } // end of switch } } }
void show_ghost() { frame_tempo.interval(100); ghost.RefreshAll(1); advance_frame(50); for (row = 0; row < 25; row++) { uint32_t val; if (frame > 25) { val = ghost_x[0][row] >> (uint8_t) (50 - frame); } else {
void show_Smeter(void) { float s_sample = 0; // Raw signal strength (max per 1ms) // Collect S-meter data if (Smeter.available()) s_sample = Smeter.read(); // Highest sample within 1 millisecond // Calculate S units. 50uV = S9 uv = (s_sample - 0.005) * 10000; // microvolts, roughly calibrated if (uv < 0.1) uv = 0.1; // protect for negative uv uv = 0.3 * uv + 0.7 * uvold; // low pass filtering for Smeter values dbuv = 20.0 * log10(uv); s = 1.0 + (14.0 + dbuv) / 6.0; #ifdef DEBUG_SMETER if (five_sec.check() == 1) { Serial.print("s_sample = "); Serial.print(s_sample); Serial.print(" uv = "); Serial.print(uv); Serial.print(" s ="); Serial.print(s); Serial.print(" dbuv = "); Serial.print(dbuv); Serial.println(""); } #endif if (s < 0.0) s = 0.0; if (s > 9.0) { dbuv = dbuv - 34.0; s = 9.0; } else dbuv = 0; uvold = uv; tft.drawFastHLine(pos_x_smeter, pos_y_smeter, s * s_w + 1, YELLOW); tft.drawFastHLine(pos_x_smeter + s * s_w + 1, pos_y_smeter, (9 * s_w + 1) - s * s_w + 1, BLACK); tft.drawFastHLine(pos_x_smeter, pos_y_smeter + 1, s * s_w + 1, YELLOW); tft.drawFastHLine(pos_x_smeter + s * s_w + 1, pos_y_smeter + 1, (9 * s_w + 1) - s * s_w + 1, BLACK); tft.drawFastHLine(pos_x_smeter, pos_y_smeter + 2, s * s_w + 1, YELLOW); tft.drawFastHLine(pos_x_smeter + s * s_w + 1, pos_y_smeter + 2, (9 * s_w + 1) - s * s_w + 1, BLACK); // tft.drawFastHLine(pos_x_smeter, pos_y_smeter+3, s*s_w+1, BLUE); // tft.drawFastHLine(pos_x_smeter+s*s_w+1, pos_y_smeter+3, (9*s_w+1)-s*s_w+1, BLACK); if (dbuv > 30) dbuv = 30; tft.drawFastHLine(pos_x_smeter + 9 * s_w + 1, pos_y_smeter, (dbuv / 5)*s_w + 1, RED); tft.drawFastHLine(pos_x_smeter + 9 * s_w + (dbuv / 5)*s_w + 1, pos_y_smeter, (6 * s_w + 1) - (dbuv / 5)*s_w, BLACK); tft.drawFastHLine(pos_x_smeter + 9 * s_w + 1, pos_y_smeter + 1, (dbuv / 5)*s_w + 1, RED); tft.drawFastHLine(pos_x_smeter + 9 * s_w + (dbuv / 5)*s_w + 1, pos_y_smeter + 1, (6 * s_w + 1) - (dbuv / 5)*s_w, BLACK); tft.drawFastHLine(pos_x_smeter + 9 * s_w + 1, pos_y_smeter + 2, (dbuv / 5)*s_w + 1, RED); tft.drawFastHLine(pos_x_smeter + 9 * s_w + (dbuv / 5)*s_w + 1, pos_y_smeter + 2, (6 * s_w + 1) - (dbuv / 5)*s_w, BLACK); }
void Lamp::update() { // drawMenu(menuPosition()); doLed(); if (idleMetro.check()==1) { drawMenu(menuPosition()); _idleTime++; if (_idleTime==10) updateMenuIndex('t'); } if (clkMetro.check()==1) getDate(); if (!_alarming) { switch (getDisplayMode()) { case lAUDIO: drawAudio(); break; case lCYCLE: drawCycle(); break; case lRANDOM: drawRandom(); break; case lSOLID: drawSolid(); break; default: break; } } else { drawAlarm(); } }
void loop(){ // do some stuff here - the joy of interrupts is that they take care of themselves if (mainTimer.check() == true) { /* Serial.print("Encoder: "); Serial.print(encoder0Pos); Serial.print(" unKnown: ");Serial.print(unknownvalue, DEC); Serial.println(""); */ nh.spinOnce(); } }
int main(){ clock_t _ = clock(); int size = 8 << 20; char *p = (char*)malloc(size) + size; //__asm__("movl %0, %%esp\n" :: "r"(p)); //std::ifstream fin("in.txt"); //std::ofstream fout("out.txt"); int n; while(cin>>n){ memset(ls,0,sizeof(ls)); item *loc=storage; Metro src; for(int i=0;i<n-1;i++){ string name; cin>>name; int a=src.alloc(name); cin>>name; int b=src.alloc(name); insert(ls,a,b,loc); } memset(lt,0,sizeof(lt)); Metro tgt; for(int i=0;i<n-1;i++){ string name; cin>>name; int a=tgt.alloc(name); cin>>name; int b=tgt.alloc(name); insert(lt,a,b,loc); } std::pair<int,int> rs=findRoot(ls),rt=findRoot(lt); std::vector<HashPair> vs,vt; vs.push_back(HashPair(rs.first,hash(ls,rs.first,rs.second,hs))); if(rs.second!=-1){ vs.push_back(HashPair(rs.second,hash(ls,rs.second,rs.first,hs))); } std::sort(vs.begin(),vs.end()); vt.push_back(HashPair(rt.first,hash(lt,rt.first,rt.second,ht))); if(rs.second!=-1){ vt.push_back(HashPair(rt.second,hash(lt,rt.second,rt.first,ht))); } std::sort(vt.begin(),vt.end()); cnt = 0; if(match(vs,vt,mapping)){ // for(int i=0;i<n;i++){ // cout<<src.vec[i]<<' '<<tgt.vec[mapping[i]]<<'\n'; // } }else{ cout<<"TAT\n"; } if(cnt != n){ RE(); } } printf("\nTime cost: %.2fs\n", 1.0 * (clock() - _) / CLOCKS_PER_SEC); return 0; }
void loop(){ if (mlxMetro.check() == 1) { int sens = mlx_1.readAngle(); Serial.print(sens); Serial.println(); if (sens>=0) ii = sens/10 - north; while (ii<0) ii+=360; // Serial.print(ii); // Serial.println(""); } delay(3); a1 = ii; // set servo angle from rot. sensor if (v1 < a1 ) v1++; if (v1 > a1 ) v1--; if ( v1-v1a == 0) { Servo360(v1); } v1a=v1; }
void show_spectrum(float line_gain, float LPFcoeff) { static int startx=0, endx; endx=startx+16; int scale=3; float avg = 0.0; // Draw spectrum display for (int16_t x=startx; x < endx; x+=1) { if ((x > 1) && (x < 159)) // moving window - weighted average of 5 points of the spectrum to smooth spectrum in the frequency domain // weights: x: 50% , x-1/x+1: 36%, x+2/x-2: 14% avg = myFFT.output[(x)*16/10]*0.5 + myFFT.output[(x-1)*16/10]*0.18 + myFFT.output[(x-2)*16/10]*0.07 + myFFT.output[(x+1)*16/10]*0.18 + myFFT.output[(x+2)*16/10]*0.07; else avg = myFFT.output[(x)*16/10]; // pixelnew[x] = LPFcoeff * 2 * sqrt (abs(myFFT.output[(x)*16/10])*scale) + (1 - LPFcoeff) * pixelold[x]; // low pass filtering of the spectrum pixels to smooth/slow down spectrum in the time domain // experimental LPF for spectrum: ynew = LPCoeff * x + (1-LPCoeff) * yprevious; here: A = 0.3 to 0.5 seems to be a good idea pixelnew[x] = LPFcoeff * 2 * sqrt (abs(avg)*scale) + (1 - LPFcoeff) * pixelold[x]; /* for (int16_t i=0; x < 5; x+=1) { pixelnew[x+i] = 2 * sqrt (abs(myFFT.output[(x+i)*16/10])*scale); if (pixelnew[x+i] > pos-1) pixelnew[x+i] = pos-1; } */ // int bar=2 * sqrt (abs(myFFT.output[x*16/10])*scale); // if (bar >pos-1) bar=pos-1; if(x != pos_centre_f) { // common way: draw bars // tft.drawFastVLine(x, pos-1-bar,bar, BLUE); // GREEN); // tft.drawFastVLine(x, 0, pos-1-bar, WHITE); //BLACK); // alternate way: draw pixels // only plot pixel, if at a new position if (pixelold[x] != pixelnew[x]) { tft.drawPixel(x, pos-1-pixelold[x], BLACK); // delete old pixel tft.drawPixel(x, pos-1-pixelnew[x], WHITE); // write new pixel pixelold[x] = pixelnew[x]; } /* if (pixelnew[x] > 5 * (pixelnew[x+1] + pixelnew[x-1])) { tft.drawFastVLine(x, pos-1-pixelnew[x], pixelnew[x], BLUE); tft.drawFastVLine(x, 0, pos-1- pixelnew[x], BLACK); } */ } } // Calculate S units. 50uV = S9 //if (0) { if (Smetertimer.check()==1) { uv = myFFT.output[159]+myFFT.output[160]+myFFT.output[161]+myFFT.output[162]+myFFT.output[158]+myFFT.output[157]+myFFT.output[156]; // measure signal strength of carrier of AM Transmission at exact frequency // low pass filtering for Smeter values uv = 0.1 * uv + 0.9 * uvold; if (uv == 0) dbm = -130; else { dbm = 20*log10(uv)-83.5-25.7-1.5*line_gain;} //dbm standardized to 15.26Hz Receiver Bandwidth // constant 83.5dB determined empirically by measuring a carrier with a Perseus SDR // and comparing the output of the Teensy FFT // 25.7dB is INA163 gain in frontend //dbm measurement on the Perseus standardized to RBW of 15.26Hz // float vol = analogRead(15); // vol = vol / 1023.0; // now calculate S-value from dbm s = 9.0 + ((dbm + 73.0) / 6.0); if (s <0.0) s=0.0; if ( s > 9.0) { dbuv = dbm + 73.0; s = 9.0; } else dbuv = 0.0; // Print S units //s=roundf(s); /* tft.fillRect(0,105, 50, 7,ST7735_BLACK); tft.fillRect(0,105, 160, 7,ST7735_BLACK); tft.setCursor(100,105); // sprintf(string,"%04.0f FFT",uv); // sprintf(string,"%04.0f dbm",dbm); sprintf(string,"%02.0f",s); tft.print(string); tft.setCursor(0,105); // sprintf(string,"%04.0f FFT",uv); sprintf(string,"%04.0f dbm",dbm); tft.print(string); */ tft.drawFastHLine(pos_x_smeter, pos_y_smeter, s*s_w+1, BLUE); tft.drawFastHLine(pos_x_smeter+s*s_w+1, pos_y_smeter, (9*s_w+1)-s*s_w+1, BLACK); tft.drawFastHLine(pos_x_smeter, pos_y_smeter+1, s*s_w+1, WHITE); tft.drawFastHLine(pos_x_smeter+s*s_w+1, pos_y_smeter+1, (9*s_w+1)-s*s_w+1, BLACK); tft.drawFastHLine(pos_x_smeter, pos_y_smeter+2, s*s_w+1, BLUE); tft.drawFastHLine(pos_x_smeter+s*s_w+1, pos_y_smeter+2, (9*s_w+1)-s*s_w+1, BLACK); // tft.drawFastHLine(pos_x_smeter, pos_y_smeter+3, s*s_w+1, BLUE); // tft.drawFastHLine(pos_x_smeter+s*s_w+1, pos_y_smeter+3, (9*s_w+1)-s*s_w+1, BLACK); if(dbuv>30) dbuv=30; tft.drawFastHLine(pos_x_smeter+9*s_w+1, pos_y_smeter, (dbuv/5)*s_w+1, RED); tft.drawFastHLine(pos_x_smeter+9*s_w+(dbuv/5)*s_w+1, pos_y_smeter, (6*s_w+1)-(dbuv/5)*s_w, BLACK); tft.drawFastHLine(pos_x_smeter+9*s_w+1, pos_y_smeter+1, (dbuv/5)*s_w+1, RED); tft.drawFastHLine(pos_x_smeter+9*s_w+(dbuv/5)*s_w+1, pos_y_smeter+1, (6*s_w+1)-(dbuv/5)*s_w, BLACK); tft.drawFastHLine(pos_x_smeter+9*s_w+1, pos_y_smeter+2, (dbuv/5)*s_w+1, RED); tft.drawFastHLine(pos_x_smeter+9*s_w+(dbuv/5)*s_w+1, pos_y_smeter+2, (6*s_w+1)-(dbuv/5)*s_w, BLACK); // tft.drawFastHLine(pos_x_smeter+9*s_w+1, pos_y_smeter+3, (dbuv/5)*s_w+1, RED); // tft.drawFastHLine(pos_x_smeter+9*s_w+(dbuv/5)*s_w+1, pos_y_smeter+3, (6*s_w+1)-(dbuv/5)*s_w, BLACK); // tft.fillRect(0, 105, 70, 7,ST7735_BLACK); // tft.setCursor(0, 105); // if (dbuv == 0) sprintf(string,"S:%1.0f",s); // else { // sprintf(string,"S:9+%02.0f dB",dbuv); // } // tft.print(string); // tft.fillRect(100,105, 50, 7,ST7735_BLACK); // tft.setCursor(100,105); // sprintf(string,"%04.0f dBm",dbm); // tft.print(string); uvold = uv; } // end if (Smeter Timer) startx+=16; if(startx >=160) startx=0; //digitalWrite(DEBUG_PIN,0); // }
// --- loop --- void loop(){ char Key = kpd.getKey(); switch (alarmState) { // off - system idle case off: set_sirene(false); goto_on_if_password(); break; // wait_on - delay before on (delai de sortie maison) case wait_on: set_sirene(false); goto_off_if_password(); if(wait_on_timer.check() == 1){ set_lcd("alarm on", ""); next_alarmState = on; } break; // on - system is running case on: set_sirene(false); if(get_sensors()) { next_alarmState = detection; set_lcd("detection", ""); } goto_off_if_password(); break; // detection - movement detected case detection: set_sirene(false); send_sms(); goto_off_if_password(); before_sirene_timer.reset(); next_alarmState = before_sirene; break; // before_sirene - delay before sirene (delai d'entrée dans maison) case before_sirene: set_sirene(false); if(before_sirene_timer.check() == 1){ ring_sirene_timer.reset(); next_alarmState = ring_sirene; set_lcd("sirene", ""); } goto_off_if_password(); break; // sirene - sirene is crying case ring_sirene: set_sirene(true); goto_off_if_password(); if(ring_sirene_timer.check() == 1){ wait_on_timer.reset(); next_alarmState = wait_on; set_lcd("wait_on", ""); } break; } alarmState = next_alarmState; }
void blinkLed() { if (blinkLedTime.check()) { blinkLedState = !blinkLedState; digitalWrite(LED_BUILTIN, blinkLedState); } }