Example #1
0
void initScan_i2c(sState *prev){
	Wire.begin();
	myEnc.setLimits(0,32767);
	myEnc.write(0);
	myEnc.setMultiplicators(1,5);
	scan_i2c(success, unknow_error);
    }
Example #2
0
void setup() {
  Serial.begin(115200);
  Wire.begin();
  
  scan_i2c();

  wifiControl.setup(sids, passwords);
  timeControl.setup();

  for (int i=0; i < NUM_RELAYS; i++)
  {
      Serial.print("Sending in #"); 
      Serial.print(i); 
      Serial.print(" on pin ");
      Serial.println(POW_PINS[i]);
  }


  Relays.setup(POW_PINS);
  ledControl.setup();
  webControl.setup();

  ledcSetup(SOUND_CHANNEL, 1000, 13);
  ledcAttachPin(SOUND_PIN, SOUND_CHANNEL);
}
Example #3
0
void ParseLine() {
  char * strtokIndx;
  char delimiter[] = " \n";

  std::string command = "";
  std::string parameter = "";
  std::vector<std::string> parameters;

  
  // get the first element
  strtokIndx = strtok(buffer, delimiter);
  command.assign(strtokIndx, strlen(strtokIndx));
  Serial.print("Command received: [");
  Serial.print(command.c_str());
  Serial.println("]");
  strtokIndx = strtok(NULL, delimiter);

  while(strtokIndx != NULL) {
    parameter.assign(strtokIndx, strlen(strtokIndx));
    Serial.print("Parameter received: [");
    Serial.print(parameter.c_str());
    Serial.println("]");
    parameters.push_back(parameter);
    strtokIndx = strtok(NULL, delimiter);
  }


  if (command == "relay") {
    // Relay has further options, on or off
    if (parameters.at(0) == "on") {
      Relays.setState(atoi(parameters.at(1).c_str()), 1);
    } else if (parameters.at(0) == "off") {
      Relays.setState(atoi(parameters.at(1).c_str()), 0);
    } else if (parameters.at(0) == "get") {
      Relays.printStates();
    }
  } else if (command == "i2c") {
    // I2C just returns the current devices
    scan_i2c();
  } else if (command == "beep") {
    int value = atoi(parameters.at(0).c_str());
    uint32_t duty = (8191 / 255) * min(value, 255);
    Serial.print("Beeping "); Serial.print(value);
    Serial.print(" duty "); Serial.println(duty);
    ledcWrite(SOUND_CHANNEL, duty);
    delay(1000);
    ledcWrite(SOUND_CHANNEL, 0);
  } else if (command == "time") {
    if (parameters.at(0) == "get") {
      timeControl.printDate();
    } else if (parameters.at(0) == "set") {
      timeControl.setDate(3, 2, 1, 0, 3, 11, 18);
      timeControl.printDate();
    }
  }
}
Example #4
0
sState* testScan_i2c(){

	static int memPosition = -1;
	static int current_add = 7;

	int Position = myEnc.read();    //position du selecteur modulo le nombre de choix possible

	if(Position != memPosition){  //on affiche que si on change de position
		byte add=0;
		if(Position > memPosition){
			for(int i=current_add+1;i<120;i++){
				if(success[i] || unknow_error[i]){
					add=i;
					break;
				}
			}
		}

		if(Position < memPosition){
			for(int i=current_add-1;i>8;i--){
				if(success[i] || unknow_error[i]){
					add=i;
					break;
				}
			}
		}
		if(add){
			display(add,success, unknow_error);
			current_add = add;
		}
		if((!add && Position < memPosition) || !Position){
			int nb=0;
			for(int i=8;i<120;i++){
				if(success[i])
					nb++;
			}
			afficher(0,1,"%d Devices(s)",nb);
			current_add -= 1;
		}
		memPosition=Position;
	}

	if(!digitalRead(SELECT)){	//si on appui sur select:
		scan_i2c(success, unknow_error);
		int nb=0;
		for(int i=8;i<120;i++){
			if(success[i])
				nb++;
		}
		afficher(0,1,"%d Devices(s)",nb);
		current_add = 7;
	}

	if(!digitalRead(RETOUR)){
		delay(DELAY_BOUNCE);	//anti rebond
		while(!digitalRead(RETOUR));	//attente du relachement du bouton
		return(&sMenu_principal);
	}

    return NULL;
}