Taller de Arduino

  • Iniciador del tema Iniciador del tema jmcadsl
  • Fecha de inicio Fecha de inicio
Estado
Cerrado para nuevas respuestas.
Mi Controlador sigue al pié del cañón, sin ningún cuelgue y plenamente operativo. Será cuestión de meterle mano al tema del PH o al tema de la comunicación con el PC/Internet

¿sabemos algo del "nuevo ordenamiento del Foro"? o le meto mano a crear uno... (señores del Staff decidnos algo)

Pepepotamo te importaría poner ese pedazo de código o tiene derechos de autor jejejeeje, es por no escribir mucho código, vamos que soy un poco bagote:vergonzos:vergonzos

podríamos hacer un wiki

por cierto el mando que al final voy ha utilizar el de la TV actual, todo dependerá de donde apunte con el mando,
el receptor , tambien sirve el de la vieja tarjeta receptora de TV para el PC, es que este chisme no hace ascos a nada
 
Última edición:
no desespereis, estamos viendo como lo podemos organizar.
 
Yo lo estuve mirando pero lo descarte.

No os parece un pelin arriesgado que responda a cualquier mando? Mis hijas se lo pasarían pipa. Jejeje.
 
Yo lo estuve mirando pero lo descarte.

No os parece un pelin arriesgado que responda a cualquier mando? Mis hijas se lo pasarían pipa. Jejeje.
No responde a cualquier mando sino al que tu programes y ademas que este apuntado al receptor, aunque no se puede descarta como juguete, lo que no tengo claro es para quien jajajajajaja
 
ya he recibido mi meanwell 60-48p y voy a probar a hacer el efecto amanecer-anochecer.

Como no tengo ni idea de programar pues pregunto a los que sabeis:

¿como podria decirle que a las 10 me encienda las luces al minimo y vaya de 0 a 100% durante la hora siguiente?

para que me lo encienda a una determinada intensidad he estado leyendo y creo saber como se hace. algo así:

int luces = 10; //o la salida pwm que sea

en el void setup no pongo nada

void loop()
{
if (hour = 10)
analogWrite(luces, 255);
}

con esto me enciende las luces a las 10 al 100% (que es 255)
lo que no se es como decirle que vaya del 0 al 100% y que el proceso dure por ejemplo una hora o dos horas.

he visto este ejemplo para hacer fade de un led por pwm:

int ledPin = 9; // LED connected to digital pin 9

void setup() {
// nada aqui
}

void loop() {
// para hacer fade de 0 a 255 en intervalos de 5:
for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {
// se establece el rango de valores (rango de 0 a 255):
analogWrite(ledPin, fadeValue);
// espera 30 milisegundos para ver el efecto
delay(30);
}
// y lo mismo pero al revés:
// fade out from max to min in increments of 5 points:
for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {
// sets the value (range from 0 to 255):
analogWrite(ledPin, fadeValue);
// wait for 30 milliseconds to see the dimming effect
delay(30);
}
}
 
Pedazo de aporte lo del mando a distancia.....si señor....lo que no se es si me queda memoria de código para implementarlo jejejeje.

jmerino, lo del optiboot estas en lo cierto , el arduino uno viene ya programado con este nuevo boot.
Para implementarlo debes hacer lo siguiente:
Tutorial WatchDog

Implementado el WatchDog, funcionando perfectamente....

PepePotamo, el problema de que se cuelgue no biene por el codigo, simplemente se cuelga por hardware y ya esta. El mio llevaba semanas funcionando ok, pero ayer por la mañana, estaba colgado. jejeje, ahora a descolgarlo y ya está.

A ver como avanzamos con ese remote....
 
hola bbq tendrias que indicarle
lee hora y minuto
minuto=minutoreal
si hora =10 {// alas 10 entra
si minuto es distinto de minutoreal y minutoreal< 51{ incrementa en 5 "si cada minuto aumentas 5 en 51 minutos estan a tope =255" }
}

si no te a kedado claro luego intento hacerlo bien pero esa seria la idea vas comprobando los minutos o segundos y vas aumentando hasta que quieras.

facil jeje ahora hay que programarlo jejeje
 
Implementado el WatchDog, funcionando perfectamente....

PepePotamo, el problema de que se cuelgue no biene por el codigo, simplemente se cuelga por hardware y ya esta. El mio llevaba semanas funcionando ok, pero ayer por la mañana, estaba colgado. jejeje, ahora a descolgarlo y ya está.

A ver como avanzamos con ese remote....
buenas jmerino hay alguna manera de saber si mi bootloader admite el WatchDog tengo el arduino Duemilanove
se hago un reset pierdo el valor de las variables que tenga almacenadas en la EPROM
 
Última edición:
Ola a todos soy nuevo en el foro y hace días que sigo de cerca todo lo relacionado con este post y en breves estaré trasteando con el arduino aver si entre todos conseguimos algo bueno y con varias utilidades para hacernos la vida mas fácil a todos
 
ufff si entenderte te entiendo. algo asi es lo que estaba pensando yo. pero como pongo eso?

de momento voy a hacer las conexiones y le voy a meter al arduino un programita con distintos valores para el analogWrite(entre 0 y 255) y voy a ir midiendo en la salida de la meanwell los Voltios que me va dando. para saber que tengo las conexiones bien hechas.
luego tengo que desmontar un poco la pantalla y hacer un par de cambios para meterle la meanwell.
 
Bienvenido Kafu!!! Otro pa la saca.

bbq, tal como te comenta karagos tienes que hacer un bucle para ir aumentando de manera progresiva, cuando tenga un momento lo hago y te lo posteo para que sea copy paste..... el problema que veo yo a este tipo de bucles es el siguiente... que jmcadsl lo aclare, que creo que por eso el tiene 2 arduinos en paralelo....

El arduino solo puede ejecutar un hilo de codigo a la vez (no es multitaréa), por lo que si no hacemos bien ese bucle (lo mejor sería hacer una funcion que lo gestione), nos encontramos que mientras hacemos un dimeado de algo, no podemos hacer nada más. Y cuando digo nada es nada, si hemos dejado un rele abierto y entramos a dimear durante 5 minutos, tendremos ese rele abierto durante al menos esos cinco minutos.

Como digo, esto se puede solucionar mediante un buen analisis, pero creo que hasta la fecha solo un par de usuarios lo han hecho y yo no me cuento entre ellos.

Con un poco de suerte nos organizan ya este foro y nos podemos centrar en temas concretos porque.........juas juas juas.

conanelbarbaro, no puedes utilizar el Watchdog directamente, tienes que reprogramar el chip del arduino con un programador muy sencillo de realizar, debe de estár la información 6 o 7 páginas atrás, ahora no la encuentro, yo como probé sin leer, me cargue el chip y compré el nuevo del arduino UNO que ya viene incorporado el nuevo bootloader y que solo hay que activarlo.

Comentar que el WatchDog es mas complejo de lo que parece cuando estamos trabajando con menus y demás y hay que ir inicializando el contador constantemente para que no se resetee.

Menudo tocho para engrosar las páginas de este post......buaaa buaaa buaaa.
 
HOLA el bucle esta claro que hay que llamarlo desde el loop principal cada vez que se haga el bucle principal.
en bucle principal hay solo llamas a funciones ... temperatura.... peristalticas.... y otra seria la del dimeo. comprar la hora y darle un poco mas de caña solo se tarda unos mlsegundos y vuelve a comprobar todo en menos de 1 seg.
a mi me funciona..... por ahora jeje
 
Lo doy por echo entonces karagos, recuerdo haber visto codigo con delays grandotes y queria dejar claro el tema del monotasking.

Para los menos atrevidos, decir que existe una plaquita "semi-comercial" que está pensada para arduino.
La vende Angel-Reef como plug-in de su arduino y he leido que funciona perfectamente.

Os dejo el link por si a alguien le interesa.....

PWM Booster

Para que me meteré en estos lios si yo no voy a dimear la pantalla con arduino.

A los nuevos.......Pedir el arduino mega si no quereis hacer corto........yo no tengo ni un pin libre
 
Última edición:
acabo de hacerlo y no lo he probado ni complilado pero por ahi van los tiros.
llamalo como he dicho en el anterior post.

las variables habria que mirar donde colocarlas y depurarlo.
void quesehagalaluzjeje(){
dimhora=hour; // lee la hora
tiempodimeado=51; //minutos que dura el dimeado
if (hour==10){/// entra solo si son las 10
if (dminuto!=minute&&minute=<tiempodimeado){//comprueva que no entre dos veces en el mismo minuto y que no se pase de los minutos de dimeo

incremento++;// cada vez que pasa suma 0, 1
analogWrite(pinluces,incremento*5);// el incremento debe multiplicarse por x para que al final de los minutos sean 255
}else if(minute=>52){
// lo pones todo a cero para el siguiente dia.
}

}
}

lo del wacthdog habeis comprado el cable o como lo habeis echo?
 
bueno a esperas de enterarme de como hago lo del dimeado he probado lo siguiente:
he hecho todas las conexiones y he enchufado la meanwell al pin 10 del arduino. todavia no he hecho el montaje de los leds a la meanwell.
luego hago un ejemplito de analogWrite y le pongo esto: (pa ir probando)


int luces = 10; //voy a sacar la señal PWM de este pin

void setup() //aqui no se pone nada para analogWrite creo
{
}

void loop()
{
analogWrite (luces, 255); //aqui voy cambiando el numero de 0 a 255, para ver cuanto me da la meanwell
}


RESULTADO:
-si voy cambiando el numero de analogwrite, desde 0 hasta 30 me da 24V
-al pasar de 30 y hasta 255 me da 48V siempre.

MI CONCLUSION DE PARDILLO:
pues a partir de 30 encenderá los leds, y desde ahi hasta 255 variará la intensidad o yo que sé para que se vea más o menos fuerte la luz, pero los voltios son los mismos.
repito que todavia no he conectado los leds, porque tengo que destripar la pantalla que tengo ahora, cuando los conecte probaré esto.

¿Dimeará?¿o no dimeará? jajaja que tensión!

Mykimic la fuente es la ELN 60-48P. con la D no tengo ni idea, se hara con otros componentes...
 
bbq, ya tienes hecho el esquemilla ese???

Sin conectar la meanwell vas de 0 a 10v ???

Puede que sin carga haga cosas raras!!!

karagos, lo del watchdog yo me hice el cable, solo son 3 resistencias, pero como ya había frito el chip, pues no consegui arreglarlo, o eso creo yo.

Voy a buscar el posto donde me lo indicaron y lo pongo.

Aqui está Gracias a Kilito post 453
 
Última edición:
y si lo pongo asi, sencillo y simple, y que dure lo que dure el efecto fadding?

int meanwell = 10;

void loop()
{
efectoamanecida();
}

void efectoamanecida()
{ // comprueba la hora y empieza a amanecer si toca...
if (hour >= 10 && hour < 22)
{
for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=1) //de uno en uno
{
analogWrite(meanwell, fadeValue);
delay(1000);
}
}
else
{for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=1)
{
analogWrite(meanwell, fadeValue);
delay(1000);
}
}
}

si en el delay dejo 1000, y fadevalue +=1, va a ir de segundo en segundo, desde 0 hasta 255, eso son 255 segundos, osea que amanece y anochece en poco más de 4 minutos no? me da igual si mientras hace esto durante estos 4 minutos no hace otra cosa. funcionará? luego podria estirar un poco más el tiempo?
a ver si me llegan los leds que me faltan y lo puedo probar...
 
Última edición:
Hola para todos:

Estoy empezando con el Arduino.

Tengo montado el reloj rtc ds1307, ademas de pantalla serial.

Intento empezar con el codigo usando lo que en esta pagina tenemos pero no logro que funcione. Me da errores de compilado.

Alguien con caridad me podría ayudar por favor.

Estoy muy agradecido y por favor no paréis.

Mi placa Arduino Uno. El LCd el de Sparkfun serial16x2.

Un abrazo

El error me da esto.


sketch_nov29a.cpp:186:24: error: SLCD.h: No such file or directory
sketch_nov29a.cpp: In function 'void loop()':
sketch_nov29a:163: error: expected primary-expression before '/' token
sketch_nov29a:163: error: 'Pausa' was not declared in this scope
sketch_nov29a:163: error: expected `;' before 'durante'
sketch_nov29a.cpp: At global scope:
sketch_nov29a:171: error: 'SLCD' does not name a type
sketch_nov29a.cpp: In function 'byte decToBcd(byte)':
sketch_nov29a:173: error: redefinition of 'byte decToBcd(byte)'
sketch_nov29a:29: error: 'byte decToBcd(byte)' previously defined here
sketch_nov29a.cpp: In function 'byte bcdToDec(byte)':
sketch_nov29a:177: error: redefinition of 'byte bcdToDec(byte)'
sketch_nov29a:35: error: 'byte bcdToDec(byte)' previously defined here
sketch_nov29a.cpp: In function 'void setup()':
sketch_nov29a:184: error: redefinition of 'void setup()'
sketch_nov29a:91: error: 'void setup()' previously defined here
sketch_nov29a:187: error: 'lcd' was not declared in this scope
sketch_nov29a.cpp: In function 'void Lcdini()':
sketch_nov29a:197: error: 'lcd' was not declared in this scope
sketch_nov29a.cpp: In function 'void lcdoff()':
sketch_nov29a:203: error: 'lcd' was not declared in this scope
sketch_nov29a.cpp: In function 'void FadeLcd()':
sketch_nov29a:212: error: 'lcd' was not declared in this scope
sketch_nov29a:216: error: 'lcd' was not declared in this scope
sketch_nov29a.cpp: In function 'void loop()':
sketch_nov29a:235: error: redefinition of 'void loop()'
sketch_nov29a:112: error: 'void loop()' previously defined here
sketch_nov29a.cpp: In function 'void getDateDs1307(byte*, byte*, byte*, byte*, byte*, byte*, byte*)':
sketch_nov29a:254: error: redefinition of 'void getDateDs1307(byte*, byte*, byte*, byte*, byte*, byte*, byte*)'
sketch_nov29a:71: error: 'void getDateDs1307(byte*, byte*, byte*, byte*, byte*, byte*, byte*)' previously defined here
sketch_nov29a.cpp: In function 'void InfoLcd()':
sketch_nov29a:280: error: 'lcd' was not declared in this scope
 
Estado
Cerrado para nuevas respuestas.
Atrás
Arriba