Go Down

Topic: Control PWM desde Potenciometro y con celular (Read 93 times) previous topic - next topic

Arcesa

Nov 20, 2017, 07:57 pm Last Edit: Nov 20, 2017, 08:53 pm by surbyte
Hola saludos desde Chile, les cuento yo estoy recién conociendo arduino tengo un ramo que empezó ahora y nos pidieron realizar un proyecto pequeño y a mi Me gustaría hacer control de la intensidad de La luz del led a través de un potenciometro y también desde el celular , por ejemplo pensando que el led controlado es la luz del dormitorio y en un determinado momento entramos a la habitación giraros el potenciometro en la pared y le damos la damos la intensidad deseada a la luz después nos acostamos y ya no queremos pararnos a bajar la intensidad de la luz desde el potenciometro pero si tenemos el celular entonces abrirnos la aplicación y le bajamos la intensidad a la luz se podrá hacer de que ambos controles regulen el mismo led en el mismo arduino o estoy soñando mucho ??

Osea digamos que al pin 3 le asigne la salida pwm la cual tendra mas o menos brillo de acuerdo al ponciometro conectado por ejemplo al pin A0  pero tambien tambien quiero que un boton me desactive la lectura de A0 y me active la lectura del bluetooth el cual atraves de una apk en celular tendra un potenciometro virtual. :smiley-confuse:  :smiley-confuse:

surbyte

#1
Nov 20, 2017, 08:53 pm Last Edit: Nov 20, 2017, 08:54 pm by surbyte
Claro que puedes pero debes estudiar bastante para lograrlo.
Comienza con el led, un potenciometro y luego un led al que le controlas brillo

Debes usar el AD para leer el potenciometro.
Debs usar map para convertir la salida leida del potenciometro en valores 0-255 de brillo
y luego estudia la funcion analogWrite(pin, valor) para controlar el led.

Con estos elementos resuelves 1 parte.

Luego prueba con un modulo BT y estudia como comunicarte con el arduino.

Finalmente aprende a programar en App inventor que es la forma mas simple de hacer cosas para Android (espero que tengas android) y enviarle ese dato por BT a tu Arduino y que este lo entiende y modifique el brillo del led.


Arcesa

Claro que puedes pero debes estudiar bastante para lograrlo.
Comienza con el led, un potenciometro y luego un led al que le controlas brillo

Debes usar el AD para leer el potenciometro.
Debs usar map para convertir la salida leida del potenciometro en valores 0-255 de brillo
y luego estudia la funcion analogWrite(pin, valor) para controlar el led.

Con estos elementos resuelves 1 parte.

Luego prueba con un modulo BT y estudia como comunicarte con el arduino.

Finalmente aprende a programar en App inventor que es la forma mas simple de hacer cosas para Android (espero que tengas android) y enviarle ese dato por BT a tu Arduino y que este lo entiende y modifique el brillo del led.


Gracias surbyte por la respuesta, de verdad no pensé que siquiera me respondieran, ya me esta gustando esto del foro  :) ,  cuento un poco mas, buscando y leyendo en muchos lados encuntre algunos sketch que me fueron de gran utilidad ya logre armar una apk y controlar desde el smartfone mediante bluetooth el led y tambien tambien desde el potenciometro  pero no se como hacerlo para juntar ambos controles y poder seleccionar desde donde quiero controlar alternadamente.

con este sketch contrlo desde el potencometro

int brillo;
void setup()
{
 pinMode(3,OUTPUT);
}
void loop()
{
 brillo = analogRead(A1)/4;
 analogWrite(3,brillo);

 }


y con otro controlo desde el smartfone


String cadena, led, dato;
int pwm1 = 3;
int regulador;
void setup () {
    Serial.begin(9600);// setea la velocidad del puerto serial
    //configura el pin 3
    pinMode(pwm1,OUTPUT);
}
void loop () {
  //lee las cadenas que ingresan al puerto serie
  if (Serial.available())  {
    cadena = String("");
    while (Serial.available()) {
      cadena = cadena + char(Serial.read());
      delay(1);
    }
    partirCadena();//llama a la función partirCadena
      regulador = dato.toInt();//convierte el valor recibido en un entero
      Serial.println(regulador);// muestra el valor en recibido en el terminal serial
    if (led == "luz1") {//compara el valor de la cadena obetinada
      analogWrite(pwm1, regulador);// escribe el valor analogico en el pin nuemro 3 obtenido en el puerto  serie
    }
  }
}

void partirCadena() {
  if (cadena.indexOf(" ") >=0){                           //comprueba los datos recibidos si tienen algun espacio
      led = cadena.substring(0,(cadena.indexOf(" ")));   // filtra la cadena luz1. Toma desde el primer carácter al espacio en blanco.
      dato = cadena.substring(cadena.indexOf(" ")+1);  //
  }
}

quisiera saber como poder alternar entre esos dos sketch. :smiley-sad-blue:

Go Up