Go Down

Topic: proyecto habitación ,no arranca bridge.begin() (Read 141 times) previous topic - next topic

ditolas

Sep 13, 2016, 11:10 am Last Edit: Sep 14, 2016, 03:50 pm by ditolas
Hola a todos,
soy novato en esto del arduino pero me animé a realizar un proyecto para una habitación de mi casa y me encuentro con 2 problemas que no me dejan avanzar ,a ver si me podéis guiar por el sitio correcto.
Estoy usando el arduino Yun.
1.-El primer problema que me encuentro cuando tengo ya montado la maqueta de mi habitación con todos los dispositivos funcionando individualmente los junto en un único sketch y me encuentro con que el pin 3 de mi Yun no funciona con mi sketch ,los valores llegan ,es decir,llega la orden de encender led y no lo hace
2.-En segundo lugar ,estoy intentando hacer tambien una pagina web para el control del Yun ,pero simplemente al poner Bridge.begin() el sketch se me queda clavado y no arranca.
no se como pasaros el sketch pq me indica que me paso de los 9000 caracteres ,voy a intentar dejarlo a trozos

al final os dejo el sketch para bajar

https://mega.nz/#!lAlD1bzY!B4Ui9P6gw5sloh1Q4_tDpPuANDbhP1RhfLiTq9GSzd0

surbyte

te voy corrigiendo cosas menores pero que simplifican tu código
esto
Code: [Select]
//mostramos fecha por serial
void fecha() {
  fechaactual = RTC.get(); //recogemos el tiempo
   
  dia = day(fechaactual); //recogemos dia
  mes = month(fechaactual); //recogemos mes
  ano = year(fechaactual); //recogemos ano

  //escribimos los datos obtenidos en el serial
  //para que la fecha quede mas bonita
  if (dia < 10) {
    Serial.print("0");
    Serial.print(dia);
  }
  else   {
    Serial.print(dia);
  }

  Serial.print("/");
  if (mes < 10) {
    Serial.print("0");
    Serial.print(mes);
  }
  else   {
    Serial.print(mes);
  }
  Serial.print("/");
  Serial.println(ano);

}


es arcaico aunque funciona
reemplazalo por esto
Code: [Select]
//mostramos fecha por serial
void fecha() {
  char buffer[30];

  fechaactual = RTC.get(); //recogemos el tiempo
   
  dia = day(fechaactual); //recogemos dia
  mes = month(fechaactual); //recogemos mes
  ano = year(fechaactual); //recogemos ano

  //escribimos los datos obtenidos en el serial
  //para que la fecha quede mas bonita
  sprintf(buffer, "%02d/%02d/%02d", dia, mes, ano);
  Serial.println(buffer);
}


No cambia nada, solo mas simple, idem con la hora. Luego sigo y edito esto. tengo que irme

ditolas

muchas gracias .seguimos aprendiendo
Creo que el primer problema ya he detectado cual es ,la resistencia del led que va al pin que estaba chunga.Ahora ya me va.voy a verificarlo por si acaso pero esta vez creo que era hardware  ;D
Sigo pendiente del tema del bridge

ditolas

He estado realizando diferentes pruebas y lo que veo es que si ocupo el pin 0 y el pin 1 con lo que sea,luz,botón.... no inicia el bridge ,en cambio si no los utilizo me inicia el bridge,el problema es que necesito todos los pines para que me llegue para toda la habitación.Alguna sugerencia?

surbyte

Busca un ejemplo simple que use Bridge.begin() e intenta que funcione.
Si no lo hace tienes otro inconveniente, pero cuando pasa esto no ataques dos problemas juntos.
Debes saber que ocurre!!
Aca esta el ejemplo sugerido por arduino.cc Bridge Example
Code: [Select]
/*
  Arduino Yún Bridge example

  This example for the YunShield/Yún shows how
  to use the Bridge library to access the digital and
  analog pins on the board through REST calls.
  It demonstrates how you can create your own API when
  using REST style calls through the browser.

  Possible commands created in this shetch:

  "/arduino/digital/13"     -> digitalRead(13)
  "/arduino/digital/13/1"   -> digitalWrite(13, HIGH)
  "/arduino/analog/2/123"   -> analogWrite(2, 123)
  "/arduino/analog/2"       -> analogRead(2)
  "/arduino/mode/13/input"  -> pinMode(13, INPUT)
  "/arduino/mode/13/output" -> pinMode(13, OUTPUT)

  This example code is part of the public domain

  http://www.arduino.cc/en/Tutorial/Bridge

*/

#include <Bridge.h>
#include <BridgeServer.h>
#include <BridgeClient.h>

// Listen to the default port 5555, the Yún webserver
// will forward there all the HTTP requests you send
BridgeServer server;

void setup() {
  // Bridge startup
  pinMode(13, OUTPUT);
  digitalWrite(13, LOW);
  Bridge.begin();
  digitalWrite(13, HIGH);

  // Listen for incoming connection only from localhost
  // (no one from the external network could connect)
  server.listenOnLocalhost();
  server.begin();
}

void loop() {
  // Get clients coming from server
  BridgeClient client = server.accept();

  // There is a new client?
  if (client) {
    // Process request
    process(client);

    // Close connection and free resources.
    client.stop();
  }

  delay(50); // Poll every 50ms
}

void process(BridgeClient client) {
  // read the command
  String command = client.readStringUntil('/');

  // is "digital" command?
  if (command == "digital") {
    digitalCommand(client);
  }

  // is "analog" command?
  if (command == "analog") {
    analogCommand(client);
  }

  // is "mode" command?
  if (command == "mode") {
    modeCommand(client);
  }
}

void digitalCommand(BridgeClient client) {
  int pin, value;

  // Read pin number
  pin = client.parseInt();

  // If the next character is a '/' it means we have an URL
  // with a value like: "/digital/13/1"
  if (client.read() == '/') {
    value = client.parseInt();
    digitalWrite(pin, value);
  } else {
    value = digitalRead(pin);
  }

  // Send feedback to client
  client.print(F("Pin D"));
  client.print(pin);
  client.print(F(" set to "));
  client.println(value);

  // Update datastore key with the current pin value
  String key = "D";
  key += pin;
  Bridge.put(key, String(value));
}

void analogCommand(BridgeClient client) {
  int pin, value;

  // Read pin number
  pin = client.parseInt();

  // If the next character is a '/' it means we have an URL
  // with a value like: "/analog/5/120"
  if (client.read() == '/') {
    // Read value and execute command
    value = client.parseInt();
    analogWrite(pin, value);

    // Send feedback to client
    client.print(F("Pin D"));
    client.print(pin);
    client.print(F(" set to analog "));
    client.println(value);

    // Update datastore key with the current pin value
    String key = "D";
    key += pin;
    Bridge.put(key, String(value));
  } else {
    // Read analog pin
    value = analogRead(pin);

    // Send feedback to client
    client.print(F("Pin A"));
    client.print(pin);
    client.print(F(" reads analog "));
    client.println(value);

    // Update datastore key with the current pin value
    String key = "A";
    key += pin;
    Bridge.put(key, String(value));
  }
}

void modeCommand(BridgeClient client) {
  int pin;

  // Read pin number
  pin = client.parseInt();

  // If the next character is not a '/' we have a malformed URL
  if (client.read() != '/') {
    client.println(F("error"));
    return;
  }

  String mode = client.readStringUntil('\r');

  if (mode == "input") {
    pinMode(pin, INPUT);
    // Send feedback to client
    client.print(F("Pin D"));
    client.print(pin);
    client.print(F(" configured as INPUT!"));
    return;
  }

  if (mode == "output") {
    pinMode(pin, OUTPUT);
    // Send feedback to client
    client.print(F("Pin D"));
    client.print(pin);
    client.print(F(" configured as OUTPUT!"));
    return;
  }

  client.print(F("error: invalid mode "));
  client.print(mode);
}

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy