Exemplo n.º 1
0
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
		}
	}
}
Exemplo n.º 3
0
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 {
Exemplo n.º 4
0
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);
}
Exemplo n.º 5
0
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();
  }
}
Exemplo n.º 6
0
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();
   
  }
}
Exemplo n.º 7
0
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;
}
Exemplo n.º 8
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;
}
Exemplo n.º 9
0
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); // 
}
Exemplo n.º 10
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;
}
Exemplo n.º 11
0
void blinkLed() {
  if (blinkLedTime.check()) {
    blinkLedState = !blinkLedState;
    digitalWrite(LED_BUILTIN, blinkLedState);
  }
}