Multitasking usando delay() - Arduino

Поділитися
Вставка
  • Опубліковано 2 жов 2024

КОМЕНТАРІ • 164

  • @alfaalfa1530
    @alfaalfa1530 2 роки тому +1

    excente amigo justo cuando lo necesitaba tengo una tarjeta de cotrol que hice, para abrir y cerrar un porton todo funciona bien
    pero tenia problemas si necesitaba poner un tiempo asi me quedo perfecto muchas gracias

    • @cefuve
      @cefuve  2 роки тому

      Excelente! Saludos.

  • @tamayoguillermo
    @tamayoguillermo 3 роки тому +1

    Empecé a ver un par de tus videos, son muy buenos, muy prácticos para los que estamos comenzando, gracias.
    Un abrazo, desde Cali, Colombia, eres excelente docente.
    Feliz día
    Guillermo Tamayo Vargas

    • @cefuve
      @cefuve  3 роки тому +1

      Muchas gracias Guillermo, saludos!

  • @raulangelmerigo3476
    @raulangelmerigo3476 3 роки тому

    hHola maestro muy buenas noches, desde San Nicolás, Argentina te saludo!! es extremadamente didáctico tu sistema de enseñanza, MUY bueno!! llevo varios meses incursionando en esto y he visto de tooodooo jaja!! estoy haciendo un trabajo para introducir Arduino a la empresa para la cual trabajo, si bien mi hijo me pone en alerta debido a la fragilidad de los componentes y el ambiente agresivo donde lo pretendo instalar sigo adelante. Tengo una máquina a la que quiero controlar varios puntos de temperatura y presentarlos, mediante instrumentos, a cada uno de ellos , pero TAMBIÉN marcaré con led de 3 colores, distintos rangos, esto es, =21 y =25 pero < 28 ese mismo led amarillo debe comenzar a parpadear y a su vez sonar buzer ( contador1 para ambos), luego si excede >=28º debe encender led rojo y actuar otro tipo de alarma también intermitente. hasta aquí.. todo bien!! pregunta: debo generar para cada punto de medición otros dos contadores o hay alguna técnica .. truco que se pueda hacer?

    • @cefuve
      @cefuve  3 роки тому

      Hola Raul, muchas gracias por tu comentario. Respecto a tu duda, podría decirte que hay un sin fin de formas de programarlo. Según lo que tu me dices, sería:
      - Un contador para cada led intermitente y un if común, para la luz verde.
      Por otro lado, si ambos led (amarillo y rojo) parpadean al mismo tiempo, podría usar un contador para los dos, y a parte una variable auxiliar para cada led, que habilite o deshabilite el parpadeo, algo como:
      bool en_Yellow = false;
      bool en_Red = false;
      if(count >= 100){
      if(en_Yellow == true){
      //parpadear led amarillo
      }
      if(en_Red == true){
      //parpadear led rojo
      }
      }
      Espero se haya entendido y sea de utilidad para ti.
      Saludos!

    • @raulangelmerigo3476
      @raulangelmerigo3476 3 роки тому

      @@cefuve hola muy buenas noches, q interesante se ha convertido al ver q me hayas respondido en forma inmediata!!! así da gusto estudiar!!! al ser varios puntos diferentes de toma de temperatura y a cada punto se lo condiciona en 3 niveles lo q creo es q debería tener tantos contadores como puntos de muestreo para poder considerarlos (y actúen) independientes. puedo apagar el amarillo al pasar al último nivel de riesgo (rojo) y asì utilizar 1 sólo contador para cada punto. ahora, mi duda està en la puesta a CERO del contador, si la falla se da en un determinado momento en varios puntos a la vez el contador global se mantiene separado de cada contador utilizado en cada tramo del programa dado como Temp1, Temp2, Temp3, Temp4 ? seguirè estudiando para ver alguna diferencia y mañana posteo nuevamente. y busco la forma de pegar una parte del programa para que sea corregido en linea si lo apruebas!!

    • @cefuve
      @cefuve  3 роки тому

      Hola Raúl, siempre intento ir respondiendo de inmediato, para que no se me junten los comentarios :)
      Sería ideal ver el código que tienes para ver más o menos las intenciones, aunque con esta última explicación creo que ya entendí mejor de que se trata... Puedes publicar tu código en mi página paste.cefuve.com y compartir el link resultante para revisar tu código. Saludos!

  • @ricardomonsalvegaitan4650
    @ricardomonsalvegaitan4650 3 роки тому +1

    Excelente esplicacion, muy clara.
    Gracias máster. Saludos desde Colombia.

  • @guillermoestebantorresrenn3173
    @guillermoestebantorresrenn3173 3 роки тому

    Maravilloso!!!!!!!!!!!!!! muchas gracias por tu dedicación y este fabuloso truco!

    • @cefuve
      @cefuve  3 роки тому

      No hay de que Guillermo, gracias por comentar. Saludos!

  • @GiuseppeDeLilla
    @GiuseppeDeLilla 11 місяців тому

    Interesante, genial y sin utilizar el millis Felicitaciones. No se me habia ocurrido

  • @jpsupervideos
    @jpsupervideos Рік тому +5

    (Jose Palacio)Por primera vez entro a tu pagina ...... me sorprendio y me gusto bastante. Eres un REAL profesor , que tiene en cuenta que la persona que quiere aprender requiere esplicacion clara. Y sabes colocarte en la posicion de el estudiante y anticiparse a sus dudas. Gracias "teacher"...no pares de enseñar.....felicidades

    • @cefuve
      @cefuve  Рік тому

      Muchas gracias Jose, saludos!

  • @gilbertovidal3647
    @gilbertovidal3647 3 роки тому

    Hola Cefuve, intersante la tecnica, y recreativo, no obstante aclaro, comentas que ESTA ES LA BASE DE LA MULTITAREA, lo cual no es asi. Aclaro para que otros entiendan mejor, que la multitarea es la ejecucion de diversos procesos en PARALELO, donde pueden compartir registros de memoria. Para esto se usan las Hilaturas los Threads. Cada hilo es independiente y ejecu un proceso independiente SIMULTANEAMENTE a otro hilo. Saludos excelente dia.

    • @cefuve
      @cefuve  3 роки тому +1

      Gracias por tu aclaración Gilberto. Como bien dices, en los procesadores modernos con múltiples núcleos, es posible tener un multitasking real (siempre y cuando los recursos externos a la CPU sean suficientes). Quizás debí haber especificado que hablaba pensando en los arduinos más básicos, con microcontroladores de 1 núcleo, creí que se entendería con el contexto del video.
      Que tengas un buen día, saludos!

  • @siku3350
    @siku3350 3 роки тому

    Excelente tuto y explicación, claro y conciso. Sigo, poco a poco, ampliando conocimientos en este estupendo canal. Muchas gracias y un saludo!!

    • @cefuve
      @cefuve  3 роки тому +1

      Genial, un gran saludo!

  • @retrieval-oi6kj
    @retrieval-oi6kj Рік тому

    eres un mago, genial 😄

    • @cefuve
      @cefuve  Рік тому

      Muchas gracias! saludos.

  • @edwardtro1
    @edwardtro1 2 роки тому

    De vuelta por aquí y como siempre sus clases son magistrales gracias.

    • @cefuve
      @cefuve  2 роки тому

      Gracias Ed, saludos.

  • @fernandorodelo8480
    @fernandorodelo8480 8 місяців тому

    Muy bien amigo!👍

  • @arduindustial2838
    @arduindustial2838 3 роки тому

    Excelente video cesar!!!! aprendí más de la lógica de programación , realmente es muy gratificante tenerte como profesor !!!!, las alternativas a millis, están buenas , abrazo grande 😊 y esperamos el de millis !!

  • @hermesgarcia789
    @hermesgarcia789 2 роки тому

    Excelente!!!!

  • @joseccorihuamantica5930
    @joseccorihuamantica5930 3 роки тому

    Bien ms eres un capo gracias por las enseñanzas

  • @luisfernandoalvarez5500
    @luisfernandoalvarez5500 2 роки тому

    A mí me funciona excelente. Uso el MPC2515.

    • @cefuve
      @cefuve  2 роки тому

      Gracias por la acotación, podrías decirnos para que lo usas? o si lo has usado en algún proyecto?

  • @cesarleon3856
    @cesarleon3856 3 роки тому +1

    Genial!! Muy bien explicado. Pensé que iba a ser una chapa pero se me pasó volando. Muy ameno, gracias

  • @eduardosanchez4732
    @eduardosanchez4732 3 роки тому +3

    Muchas gracias por dedicar tu tiempo para la educación y temas geniales como este.

    • @cefuve
      @cefuve  3 роки тому

      Gracias por tu comentario Eduardo, Saludos!

  • @mariobodanof6730
    @mariobodanof6730 2 роки тому +1

    Excelente!💪...agradecido por los tutoriales que desarrollas...sirven bastante para los que estamos iniciando en Arduino.👌

  • @OlafAlbrecht
    @OlafAlbrecht 2 роки тому

    Muy Bueno este tema me ha resultado muy util olaf de villa generla belgrano cordoba argentina

  • @renejorgealonso4681
    @renejorgealonso4681 3 роки тому +1

    Excelente explicación como siempre, podrias realizar un ejemplo de como usar una pantalla TFT ST7789 PARA ESCRIBIR UN MENSAJE Y DARLE OTRA APLICACION Muchas gracias.

    • @cefuve
      @cefuve  3 роки тому

      Hola Rene, lo agregaré a la "lista de deseos". Saludos!

  • @fabianrojas5061
    @fabianrojas5061 2 роки тому

    Muchas gracias por tus videos me ayudan mucho

  • @carlosangellotti5710
    @carlosangellotti5710 3 роки тому +1

    Excelente, muy muy bueno !!!

  • @miguelrivera8618
    @miguelrivera8618 2 роки тому

    Que asco de presentacion no se ven ni letras ni loss números. Yio te has lucido

  • @carlosenergy
    @carlosenergy 6 місяців тому

    Maravillosa explicacion, mil gracias por compartir el conocimiento.

    • @cefuve
      @cefuve  6 місяців тому

      Con mucho gusto

  • @jhonlucero3122
    @jhonlucero3122 3 роки тому +1

    Eres dios!!!!!! Te quieroo

  • @tarikazizi8597
    @tarikazizi8597 2 роки тому

    Gracias...explication de profesionales....creo que eres muy qualificadio a hacer inventions.

  • @hellsingalucard4637
    @hellsingalucard4637 Рік тому

    gracias bro, muy bueno

  • @reimundolopez1198
    @reimundolopez1198 2 роки тому

    La variable, "estado led" que está leyendo con "digital read", está leyendo el estado del pin 2? o el estado del pin A5?
    Por qué los 2 leds utilizan la misma variable?

    • @cefuve
      @cefuve  2 роки тому

      Si te fijas, en cada count le pongo int estadoLED, esto hace que la variable se cree (resetee) cada vez que entro a los if.
      No habría ningún problema si quieres poner estadoLED como variable global, porque finalmente para lo único que necesito esta variable es para saber si el led está encendido o apagado, e inmediatamente le reasigno el valor contrario.
      Saludos!

  • @fmazariegosgt
    @fmazariegosgt Рік тому +1

    Estoy muy agradecido por tan buenas clases, he resuelto un problema con mi programa, gracias a esta clase magistral. Soy novato en Arduino, pero he aprendido mucho con estos videos de usted, querido amigo.

    • @cefuve
      @cefuve  Рік тому

      Gracias por tu comentario Luis, saludos!

  • @sirtordo
    @sirtordo 11 місяців тому

    excelente, muy claro.

  • @ernestopelayo1215
    @ernestopelayo1215 3 роки тому

    Podría Funcionar para hacer unas Discrecionales/Intermitentes para auto??

    • @cefuve
      @cefuve  3 роки тому +1

      Para lo que sea, es cosa de usar la imaginación. Saludos!

  • @AlexisGonzalez-rd3gu
    @AlexisGonzalez-rd3gu 3 роки тому +1

    Muchas gracias por sus vídeos, son los mejores que he visto y muy bien explicados.
    Debería tomar en cuenta publicar más seguido y para hacer más grande su canal.
    Saludos.

    • @cefuve
      @cefuve  3 роки тому

      Gracias Alex, el tiempo, el bendito tiempo... Saludos!

  • @ruizvial
    @ruizvial 3 місяці тому

    buena, estimado profesor no se dice reciclar codigo, sino reutilizar codigo.

  • @chavarj8
    @chavarj8 Рік тому

    Bien explicado. Buen truco. También se podría usar interrupciones por hardware, interrupciones por tiempo y millis. Gracias

    • @cefuve
      @cefuve  Рік тому

      Así es Julian, gracias por comentarlo. Tengo un video haciéndolo con millis() y me faltaría el video haciéndolo con interrupciones. Saludos!

  •  2 роки тому

    👋👋

  • @todopic
    @todopic 2 роки тому

    Excelente video amigo, felicitaciones!!!
    Ahora una pregunta, existe alguna forma para poder ver cuando una esta escribiendo una instruccion la sintaxis de esta? , es decir, si escribo por ejemplo pin me aparezca todas la instrucciones que comiencen con pin? Gracias
    Mi version del arduino es la 1.8.19, corriendo en win 7.

    • @cefuve
      @cefuve  2 роки тому

      Hola, en programación esa función se llama intellisense, en las versiones 1.x de Arduino no lo he visto. Creo que en las versiones 2.x si incorporan esta función que se puede habilitar o deshabilitar desde las preferencias (Quick Suggestion). En visual studio code desconozco si la tendrá.

  • @leoharvey4112
    @leoharvey4112 3 роки тому

    Muy bien explicado, pero tengo una pregunta...Cual es el maxmo valor con la que puedo usar delay(?)....?

    • @cefuve
      @cefuve  3 роки тому

      Hola Leo, va a depender mucho de la aplicación, pero si tuviera que dar un número, diría que 100 ms podría ser un máximo, para aplicaciones muy simples...
      Saludos!

  • @jorgegomez6814
    @jorgegomez6814 3 роки тому +1

    Hola Cesar tengo ya elaborados algunos proyectos en arduino y he usado millis para tareas simultaneas pero, esta idea es genial y mucho mas sencilla creo que voy a ponerla en uso muy pronto gracias por tu tiempo .

    • @cefuve
      @cefuve  3 роки тому +1

      Genial Jorge, todo va a depender de la complejidad del proyecto, a veces no es necesario calentarse tanto la cabeza y con código super sencillo se pueden llevar a cabo los proyectos. Cuéntanos cómo te va con esta técnica, saludos!

  • @GeraMF
    @GeraMF 3 роки тому

    por máquinas de estados, y transición de estados parecido al diagrama Grafcet

  • @robertodominguez9554
    @robertodominguez9554 3 роки тому +1

    Eres lo máximo explicando profe, saludos

    • @cefuve
      @cefuve  3 роки тому

      Gracias Roberto, saludos!

  • @salvadorhanccorivera6254
    @salvadorhanccorivera6254 3 роки тому

    GRACIAS!!!!!!!!

  • @jmch1369
    @jmch1369 2 роки тому

    Gracias ,,,

  • @robertocasenaves
    @robertocasenaves 8 місяців тому

    Muchas gracias por tu tiempo y forma de enseñar. Un abrazo

  • @profejavi9854
    @profejavi9854 3 роки тому

    como puedo seguir recibiendo la lectura de un sensor ultrasónico después de presionar un botón.

    • @cefuve
      @cefuve  3 роки тому

      Hola, va a depender del código, pero no deberías usar delay grandes. También podrías averiguar sobre las interrupciones, y en ellas leer el sensor. Saludos!

  • @Tooni98_
    @Tooni98_ 3 роки тому

    No tenía ni idea. Espectacular 😍😍😍😍😍😍

  • @reimundolopez1198
    @reimundolopez1198 2 роки тому

    Eso no se puede llamar multiplexado en vez de llamarlo multitarea?

    • @cefuve
      @cefuve  2 роки тому

      El multiplexado distribuye varias salidas en una sola, por ende estaría un poco alejado de lo que se hace en el multitarea, pero una cosa es seguro, dentro de los microcontroladores hay multiplexores.
      Saludos!

  • @gerleydavid8910
    @gerleydavid8910 3 роки тому

    ufffff un nuevo seguidor , por que siempre tengo ese problema que el delay no me deja controlar el resto dle codigo, excelente logica , espero poder implementar ese multitask con delay en algo mas grande

  • @AngelGarcia-lg9oi
    @AngelGarcia-lg9oi 2 роки тому

    como puedo leer entradas analogicas en "simultaneo"? abra un videotutorial de eso

    • @cefuve
      @cefuve  2 роки тому

      Hola, no entiendo a que te refieres... Pones un lectura bajo la otra. A no ser que mientras tanto quieras hacer otras funciones, es así?

  • @kevinvq968
    @kevinvq968 2 роки тому

    acabo de hacer el progra inicial de un proyecto de balanza dinamica con esto, genial me sirvio de maravilla, ni el millis hahaha

    • @cefuve
      @cefuve  2 роки тому +1

      Buenísimo! a veces no hay que complicarse tanto, con cosas sencillas basta 👌

  • @rafaelpereyra2110
    @rafaelpereyra2110 2 роки тому

    muy lindas tus explicaciones, aprendo mucho

  • @batpin7641
    @batpin7641 3 роки тому

    Muchas gracias César, como siempre muy bien explicado.

  • @DavidFlores-uu6dy
    @DavidFlores-uu6dy 3 роки тому

    Excente

  • @pablomontanari5999
    @pablomontanari5999 3 роки тому

    Felicitaciones. Muy ameno y facil de comprender. Gracias por compartir su conocimiento.

  • @Juan-ym6lu
    @Juan-ym6lu 2 роки тому

    Me voy a volver majara,jajaja,saludos desde España

    • @cefuve
      @cefuve  2 роки тому

      Esa es la idea jaja

  • @jorgeluiss4096
    @jorgeluiss4096 2 роки тому

    Muuuuy Bueeeeno! Excelente idea lo del contador y achicar el tiempo del delay! Nunca lo había visto! Es una idea tan simple como genial! Me gusta mucho tu forma de explicar . Estoy viendo todos tus videos, y refrescando cosas de técnicas digitales que vi en el colegio (mapas de Karnaugh) en 1989. Te mando un abrazo gigante desde Buenos Aires. LIKE y SUSCRIPCIÓN! PD: me gustó el semáforo con compuertas....ya había olvidado el poder del álgebra de Boole. Es genial para comprender lo que vino después.

    • @cefuve
      @cefuve  2 роки тому

      Muchas gracias Jorge, es un mundo increíble y apasionante, gracias por ver mis videos.
      Saludos!

  • @juanpaezimbernon5127
    @juanpaezimbernon5127 Рік тому

    Hola, buenas tardes me gustaría que me ayudarás en una duda que tengo con el tema de delay y multitarea, soy nuevo y autodidacta en arduino así que no tengo muchos conocimientos, estoy haciendo un programa en el que dentro de el hay una función que es el temporizador de una salida, es decir cuando pulso el botón me pone una salida a uno y con un delay le doy un tiempo de retardo para que quede a 1 un tiempo, que pasa, que me gustaría que si le volviera a pulsar antes de que termine ese delay la temporización se pusiera otra vez desde el principio, pero no me deja hacer esa función, crees que la multitarea valdría para este caso, muchas gracias

    • @cefuve
      @cefuve  Рік тому

      Hola, tendrías que estampar el tiempo del instante en que presionas el botón en una variable. Algo como:
      if(botón == HIGH)
      time_stamp = millis();
      if(millis >= time_stamp + 5000){
      //acción después de 5 segundos
      }
      Asi, mientras presionas el botón, se actualizará el tiempo y no entrará al segundo if. Lo hará cuando sueltes el botón.
      Saludos

    • @juanpaezimbernon5127
      @juanpaezimbernon5127 Рік тому

      @@cefuve muchas gracias, lo probaré y te iré diciendo, Saludos

  • @benjaminparedesr20
    @benjaminparedesr20 3 роки тому

    Filete el vídeo.
    Yo estoy con un proyecto de barreras de acceso para vehículos y precisamente tengo un problema con la.programacion, como podría contactarte para una ayudita

    • @cefuve
      @cefuve  3 роки тому

      Hola Benjamín, en mi web están todas las formas de contacto que tengo... www.cefuve.com
      Saludos!

  • @rojoseluis3100
    @rojoseluis3100 2 роки тому

    Excelente trabajo...se agradece...!!!!

  • @fgelectrico
    @fgelectrico 3 роки тому

    Perfecto me abrió un panorama interesante Gracias

  • @javiguitarracerezo3566
    @javiguitarracerezo3566 3 роки тому

    Una explicación magistral !!! Muchas gracias.

  • @MegaY0p
    @MegaY0p 3 роки тому

    hola... la verdad no me gusta programar porque se tiene que saber muchos temas para crear un programa con cierta complejidad... no tengo nada que criticar de tus videos porque enseñas excelente, quería preguntarte de algún libro que hable de este tema... no con lenguaje c sino con Arduino que es lo que voy a utilizar... no quiero proyectos... quiero aprender bien todas las funciones...
    Me planteaba un programa donde al inicio del "juego" el usuario defina una cantidad de variables (habiendo un máximo y mínimo) por medio de un botón y de allí empiece una cuenta regresiva, el usuario debe decidir entre 1 variable... en ese momento Arduino estaría variando la verdadera entre el numero de variables elegidas al principio... el programa termina cuando el usuario se decide o la cuenta regresiva haya terminado.
    Quiero hacerlo como proyecto de fin de año... no sabría decir que utilidad le daría, pero para mi entender creo que de verdad es un reto

    • @cefuve
      @cefuve  3 роки тому +1

      Hola Diego, según lo que me dices, más que aprenderse las funciones o como funciona arduino, necesitas aprender la lógica de programación (que es lo que intento enseñar en este curso). Lo ideal es ver muchos programas, como están hechos y que funciones cumplen, no podría nombrarte un libro, sólo practica, practica y practica. Saludos!

  • @luisfernandoalvarez5500
    @luisfernandoalvarez5500 2 роки тому

    Ya manejas CAN BUS con ARDUINO?

    • @cefuve
      @cefuve  2 роки тому

      Hola Luis, aún no trabajo con protocolos industriales. Saludos.

  • @luisfernandoalvarez5500
    @luisfernandoalvarez5500 2 роки тому

    Te capté y aprendí el detalle. Mil gracias

  • @aaronzarate8108
    @aaronzarate8108 3 роки тому

    En serio deberias crear cursos para vender, tus enseñanzas son super faciles de entender, primer tutorial de muktitasking que logro entender jajajaja

    • @cefuve
      @cefuve  3 роки тому +2

      Genial!! gracias por comentarlo, saludos.

    • @albertogallego1711
      @albertogallego1711 3 роки тому

      Cesar muchas gracias por tus tutoriales
      amigo nesecito crear el codigo para multi relé e buscado por varias paginas y no me da siempre me sale en error me podrias ayudar con eso estoy apenas aprendiendo con tus tutoriales pero apenas voy con la lecion 7.2
      Muchas gracias

    • @cefuve
      @cefuve  3 роки тому

      Hola @@albertogallego1711, como te puedo ayudar?

  • @YouAreHereX
    @YouAreHereX 3 роки тому

    Muchas gracias por su video.
    Yo he usado protothread en Arduino para hacer las “multitarea” y, me resulta mucho más atractiva salvo que no le entiendo del todo a ese tema.
    Me pudieras ayudar con algunos ejemplos en ese tema del protothread?
    Te agradezco de antemano.
    Saludos cordiales

    • @cefuve
      @cefuve  3 роки тому

      Hola Gustavo, primero gracias por comentar. No conocía esa librería, le estuve "echando un ojo" y no es tan sencilla, ya que está hecha puramente en lenguaje C y usa una programación poco común... Se me hace que debe ser muy eficiente y ordenada.
      Aquí hay algunos ejemplos: roboticsbackend.com/arduino-protothreads-tutorial/
      Se me hacen muy similares a la técnica que mostré en este video...
      Nuevamente gracias por comentar, saludos!

  • @martinyanez5851
    @martinyanez5851 2 роки тому

    hola buenas noches espero que se encuentre bien descansando , quisiera saber si usted me podría resolver esta duda que estado implementado en un proyecto , para contextualizarlo este proyecto se basa en lo siguiente, al soplar en un sensor de sonido KY-038 este me prendera un led (que antes estaba apagado y que prendimos con un !) y esto hará que active un ciclo for de muchos más leds generando un efecto bonito(el propósito del led es usarlo para prender el ciclo for y que cuando funcione uno el otro también) que durara indefinidamente hasta que yo vuelva a soplar en el sensor en consecuencia el led se apagara y el ciclo acabara , la duda esta que después de prenderse el led y el ciclo for con los demás leds yo soplo el sensor nuevamente para apagarlo pero no se apaga ni el led principal ni los demás que van con el for ,que me recomendaría hacer ? no queriendo hacer mucha molestia aquí subo el código que e estado usando
    int MIC = 2; // D0 de modulo a pin 2
    int LED = 3; // anodo de LED a pin 3
    int VALOR; // variable para almacenar valor de D0
    int ESTADO; // variable para almacenar estado del LED
    int i;
    void setup(){
    pinMode(MIC, INPUT); // pin 2 como entrada
    pinMode(LED, OUTPUT); // pin 3 como salida
    }
    void loop(){
    VALOR = digitalRead(MIC); // obtiene valor de D0
    if (VALOR == HIGH){ // si D0 tiene un valor alto
    ESTADO = digitalRead(LED); // almacena estado del led (encendido o apagado)
    digitalWrite(LED, !ESTADO); // escribe en LED el valor opuesto al que tenia

    // VALOR = !VALOR; aquí?
    while(!ESTADO){ // o mejor poner LED?
    //VALOR = !VALOR; aquí?

    for( i =11; i>=6; i--){
    digitalWrite(i, HIGH);
    delay(200);
    }
    for( i =6; i

    • @cefuve
      @cefuve  2 роки тому +1

      Hola Martín, por lo que veo entras al while con la variable ESTADO, pero dentro del mismo ya no vuelves a modificar la variable, solo modifica VALOR...

    • @martinyanez5851
      @martinyanez5851 2 роки тому

      @@cefuve ahhh ya entonces voy corroborarlo modificando ESTADO , muchas gracias por ayudarme

    • @cefuve
      @cefuve  2 роки тому

      Claro, o pones VALOR en la condición del while... Me avisas como te va.

    • @martinyanez5851
      @martinyanez5851 2 роки тому

      @@cefuve Hola buenas noches espero que se encuentre bien quisiera informarle que estoy luchando linea a linea con este código y quisiera saber que acción nueva podría tomar ya que probé cambiando al final el valor del estado (prendia y no apagaba e incluso detectando la nueva señal del sensor)probé con nuevas variables tipo bool para ser más exactos en true o false pero no se si quedaron bien formuladas ya que caía en lo mismo
      y quisiera saber que estará errado obviamente respetando su tiempo y a sabienda que usted tampoco es un adivino o un mago, el código es este el "ultimo"
      int MIC = 2;
      int LED = 3;
      int VALOR;
      bool ESTADO;
      int i;
      void setup(){
      pinMode(MIC, INPUT);
      pinMode(LED, OUTPUT);
      Serial.begin(9600);
      }
      void loop(){
      VALOR = digitalRead(MIC);
      if( VALOR == HIGH){
      ESTADO=digitalRead(LED);
      digitalWrite(LED,!ESTADO);
      while(!ESTADO){
      for( i =11; i>=6; i--){
      digitalWrite(i, HIGH);
      delay(200); }


      for( i =6; i

    • @cefuve
      @cefuve  2 роки тому

      Según lo que entiendo, tendría que ser algo así:
      VALOR = digitalRead(MIC);
      if( VALOR == HIGH){
      ESTADO = digitalRead(LED);
      digitalWrite(LED, !ESTADO);
      while(VALOR == HIGH){
      //efecto de luces
      VALOR = digitalRead(MIC);
      if( VALOR == LOW ) VALOR = HIGH;
      if( VALOR == HIGH) VALOR = LOW;
      }
      }
      Preocúpate de calibrar bien el sensor para que solo entregué un HIGH cuando lo necesites...

  • @aramirezmx
    @aramirezmx 3 роки тому

    Fabulosa idea! Muchas gracias.

  • @prudenciopinzonl8042
    @prudenciopinzonl8042 3 роки тому

    Gracias por compartir su conocimiento.

  • @venturajaramillov.9183
    @venturajaramillov.9183 3 роки тому

    copie el código y tenia varios errores. Y fue magnifico porque al resolverlos fue de beneficio la experiencia
    Gracias por tu dedicación

    • @cefuve
      @cefuve  3 роки тому

      Enhorabuena! saludos.

  • @ayurrln
    @ayurrln 3 роки тому

    gracias por la explicacion, abrazo

  • @isaaccarrillo5391
    @isaaccarrillo5391 3 роки тому

    devolada llegue

    • @cefuve
      @cefuve  3 роки тому

      Así ¿Al vuelo?

  • @javiergguinarte
    @javiergguinarte 3 роки тому

    Gracias por enseñar tan clarito.

  • @carlosliriano435
    @carlosliriano435 3 роки тому

    Muy buen video, y la explicación a un nivel superior, mil gracias por compartir tantos conocimientos con los demás , saludos desde Republica. Dominicana.

    • @cefuve
      @cefuve  3 роки тому

      Gracias por comentar Carlos, saludos!

  • @diegohuaman5579
    @diegohuaman5579 3 роки тому

    Muy buena explicación asi cualquiera entiende !! Sigue subiendo vídeos de ese tipo!

  • @AFSMG
    @AFSMG 2 роки тому

    Hola Cesar, aplicándome viendo todos tus videos . Esta es una solución que esta muy bien y es muy clara. Pero quizás podrías hacerlo con interrupciones. Que creo es parecido a hacerlo con milis. Pero en general a mi me gusta toda la parte del programa que requiera de tiempo, hacerlo dentro de una interrupción de un timer. Ahí hago las lecturas de señales externas y las dejo en variables que luego son leídas en el loop. Solo que en esas variables, ya están filtradas . Lo que tu haces aquí con los CONT, pues de la misma manera se hace dentro de la interrupción y con eso controlas el tiempo que necesitas para cada cosa. Por ejemplo programas un interrupción cada 10 milisegundos y un contador controla el tiempo de encendido apagado de un led o la lectura de un interruptor. Igual a como lo haces solo que fuera del loop. Una pregunta: como puedo hacer una tabla con funciones y luego a través de la tabla ejecutar estas funciones? Muchas gracias. Un saludo

    • @cefuve
      @cefuve  2 роки тому +1

      Así es Toni, con interrupciones se aliviana la carga de pensar mucho la lógica de programación, todavía no llego hasta ahí, pero sin duda será parte de un video...
      Respecto a las tablas de funciones, no se a que te refieres específicamente, me podrías dar más contexto?
      Saludos!

    • @AFSMG
      @AFSMG 2 роки тому

      @@cefuve por email te lo comento

  • @jonathansoriano4962
    @jonathansoriano4962 3 роки тому

    Lo máximo tus videos, esto me ayudó mucho, unas consultas, como seria si cada. Vez que presiono el pulsador me aumente en 1 seg. El tiempo de oscilaciones del led? En otro video vi también la salida binaria, también podría ver el tiempo en el que está parpadeando en binario?.
    Buen aporte👍

    • @cefuve
      @cefuve  3 роки тому +1

      Hola Jonathan, para ir aumentando de a 1 segundo tendrías que hacer una variable extra que almacene la temporización, ejemplo:
      int midelay = 100;
      if(lectura == 0){
      midelay = midelay + 100;
      }
      if(count == midelay){
      //parpadear el led
      }
      Lo del binario no entendí a que te refieres.
      Saludos!

    • @jonathansoriano4962
      @jonathansoriano4962 3 роки тому

      @@cefuve voy a probarlo y te cuento. Gracias por la respuesta, lo del binario mediante un decodificador era para mostrar en un display el tiempo que se le esta dando al temporizador.

    • @cefuve
      @cefuve  3 роки тому +1

      Ah, claro, con un 7447 puedes mostrar el tiempo, en este caso sería midelay/100 para que te lo muestre en segundos... Saludos!

  • @guillermoestebantorresrenn3173
    @guillermoestebantorresrenn3173 3 роки тому

    Que hay de las interrupciones?

    • @cefuve
      @cefuve  3 роки тому

      Son ideales, estoy partiendo por lo básico. Lamentablemente el arduino uno tiene pocas entradas con interrupción...

    • @guillermoestebantorresrenn3173
      @guillermoestebantorresrenn3173 3 роки тому

      @@cefuve Esperaré con ansias esa explicación maestro. Abrazos

  • @alvaroggarcia
    @alvaroggarcia 3 роки тому

    saludos profe!! GRACIAS!

    • @cefuve
      @cefuve  3 роки тому

      Saludos Alvaro!

  • @fhisdi3762
    @fhisdi3762 3 роки тому

    hola cefuve como estas ?. sabes quería consultarte algo y no se si quieres hacer un vídeo que el proyecto me parece interesante , me pidieron un código , para una válvula hall que indique que si el agua pasa por mas de un tiempo especifica active una salida ,o una alarma o relay , no se ni como empezar , es decir por poner un ejemplo ponte que en tu tanque de agua se bota a veces , entonces tu colocas en la tubería una válvula que te diga cuanta agua pasa y si pasa mas tiempo del programado o litros , suena una alarma hasta que tu vallas y le des a un botón y apagues , lo que no logro hacer es que el código reinicie , es decir si funciona bien en la primera llenada del tanque , la suma que lleva de litros no la borra si no que la suma a la otra llenada y entonces suena la alarma por que va sumando y nunca vuelve a cero si todo sale bien....

    • @cefuve
      @cefuve  3 роки тому +1

      Hola, podrías pegar tu código en mi página paste.cefuve.com para revisarlo, me compartes el link que te da. Saludos!

    • @fhisdi3762
      @fhisdi3762 3 роки тому

      @@cefuve ok cuando tenga un chance te mando lo que conseguí por internet por que el código para mi es algo muy estresante

    • @fhisdi3762
      @fhisdi3762 3 роки тому

      @@cefuve hola cefuve te coloque el código y mi correo en la pagina que me dijiste espero te comuniques conmigo de verdad muchas gracias .

    • @cefuve
      @cefuve  3 роки тому

      @@fhisdi3762 Hola, y cual es el link que te dio la página??

    • @cefuve
      @cefuve  3 роки тому +1

      @@fhisdi3762 Aquí lo encontré...
      cefuve.com/paste/paste.php?id=12

  • @pepopepez105
    @pepopepez105 3 роки тому

    necesito un video con tu claridad sobre el control PID

    • @cefuve
      @cefuve  3 роки тому +1

      Hola pepo, lo estudiaré para ver que resulta... Saludos!

    • @pepopepez105
      @pepopepez105 3 роки тому

      @@cefuve a ver si asi lo entiendo un poco xD

    • @cefuve
      @cefuve  3 роки тому +1

      X2

    • @pepopepez105
      @pepopepez105 3 роки тому

      @@cefuve yo soy de estirar mas el brazo que la manga, acabo de enterarme que el LQR parece que es mejor

    • @cefuve
      @cefuve  3 роки тому

      Es que finalmente, la automatización, como materia, se preocupa principalmente por la eficiencia del proceso (no solo controlarlo) y ahí es donde meten un montón de teoría matemática orientada a la reducción del error... Gracias por contarme de ese método, lo voy a estudiar también. Saludos!

  • @Valhalla_Code
    @Valhalla_Code 3 роки тому

    No era lo que me esperaba pero me ayudo a mejorar la lectura del bendito botón en mi código. Muchas gracias.

    • @cefuve
      @cefuve  3 роки тому

      No hay de que ¿Qué esperabas? Saludos!

    • @Valhalla_Code
      @Valhalla_Code 3 роки тому

      @@cefuve algo así como sustituir un delay de 5 min. y que me permita salir de ese delay en cualquier momento. Aunque yo aplique un contador y un delay de 1 seg por vuelta pero su idea es mejor.

    • @cefuve
      @cefuve  3 роки тому +1

      Algo así como un delay que no bloquee pero cumpla su función... No suena tan descabellado (como yo), le voy a dar unas vueltas. Gracias por responder, saludos!

  • @vangeziyorum9725
    @vangeziyorum9725 2 роки тому

    I made an ultrasonic height and weight measuring device. I wrote the codes with Arduino and arduino UNO. Normally everything works fine. But sometimes after waiting for an hour or two, I take a measurement, the device is measuring, it shows the numbers on the screen, but it does not print the result to the thermal printer. The numbers stay on the screen, then the device is reset with whatchdog. This is starting to get annoying. can you help me with this

    • @cefuve
      @cefuve  2 роки тому

      You can paste your code on my page paste.cefuve.com and post to me the url...
      Do you try it with the interrupt? mm because, if it shows the numbers on the screen but no print on printer, the problem isn't the button, is the printer o something between printer and arduino...

    • @vangeziyorum9725
      @vangeziyorum9725 2 роки тому

      @@cefuve measureHeight();
      measureWeight();
      delay(1000);
      measureHeight();
      measureWeight();
      delay(1000);
      measureHeight();
      measureWeight();
      delay(1000);


      turnOffDisplays();
      delay(500);
      displayHeight();
      displayWeight();
      delay(500);
      turnOffDisplays();
      delay(500);
      displayHeight();
      displayWeight();
      delay(500);
      turnOffDisplays();
      delay(500);
      displayHeight();
      displayWeight();


      previousTimeButton=millis();
      do
      {
      currentTimeButton=millis();
      if (currentTimeButton-previousTimeButton>=buttonInterval)
      {
      //5000ms passed
      printtimeout=true;
      break;
      }
      } while(digitalRead(printPin)==HIGH);

      //It's time to press the button
      if (printtimeout==false)
      {
      print();
      }
      printtimeout=false; //
      wdt_reset();
      }

    • @cefuve
      @cefuve  2 роки тому

      @@vangeziyorum9725 cefuve.com/paste/paste.php?id=92

  • @samueltorres6903
    @samueltorres6903 3 роки тому

    De esta manera el tiempo no es real, ya que se suman los "delay" al tiempo de ejecución de cada instrucción, que aunque son tiempo en micro segundos , en programas que deben tener una precisión de tiempo, esto puede generar retrasos o adelantos en tiempo que despues se notaran sin duda.

    • @cefuve
      @cefuve  3 роки тому

      Así es Samuel, está técnica debe usarse solo si se puede prescindir de la precisión de tiempo, en caso contrario, ya no se podría aplicar.
      Gracias por tu comentario, saludos.

  • @Aprendeingles_gaby
    @Aprendeingles_gaby 10 місяців тому

    Se ve borroso, mejorar solo la resolución del video.

    • @cefuve
      @cefuve  10 місяців тому

      Hola, en que parte? Yo lo veo bien, está grabado en full HD... Quizás le tienes una resolución de reproducción más baja. Como la letra es pequeña, en resoluciones más bajas (360p) se ve borroso.
      Saludos!