Empieza por acá

1

Mi primera línea de código

Fundamentos de Programación

2

¿Qué es HTML/CSS/JS?

3

JavaScript no es Java

4

Primeros pasos en el navegador con alert

5

HTML, CSS, JavaScript de verdad

6

Los apuntes de Freddy en PDF

Primer proyecto: Peso en otro planeta

7

Peso en otro planeta

8

Obteniendo datos del usuario

9

Flujo y condicionales

Segundo proyecto: Dibujando con Canvas

10

Cómo funcionan Window y Document

11

El DOM: nuestro lugar de trabajo en la web

12

Dibujando en el DOM

13

Qué son las Funciones en JavaScript

14

Ciclos while y for en JavaScript

15

Eventos y Formularios en HTML y JavaScript

16

Detectar eventos del teclado con JavaScript

17

Dibujar en canvas con las flechas del teclado

Tercer proyecto: Villa platzi

18

Funciones matemáticas y números aleatorios en JavaScript

19

Uso y carga de imágenes en Canvas

Cuarto proyecto: Pakimanes

20

División, módulo y residuo en JavaScript

21

Clases y Arrays en JavaScript

Quinto proyecto: Cajero automático

22

Diagrama de Flujo del Cajero Automático

23

Implementación del Cajero Automático

Sexto proyecto: Cliente/Servidor

24

Primer servidor web con express

25

Modelo Cliente/Servidor

Programación de Hardware y Electrónica con Arduino

26

¿Cómo funciona un circuito electrónico?

27

¿Cómo programar un Arduino?

28

Programación de circuitos con C, Arduino y Sketch

29

Cómo programar un Arduino con Javascript y Node

30

Construye un Robot con JavaScript

31

Robot para riego de plantas en Arduino, Javascript y Node

Materiales de apoyo

32

Las mejores notas de los estudiantes

33

¿Cuál lenguaje de programación aprender primero?

34

La Web con Visión Profesional

Contenido Bonus

35

Qué son tablas de verdad y compuertas lógicas

Recap Curso Gratis de Programación Básica

36

Recap Programación básica

37

Recap Programación básica ENG

Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Robot para riego de plantas en Arduino, Javascript y Node

31/37
Recursos

Aportes 460

Preguntas 52

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Así termina el circuito en la clase. Si no tienen un Arduino pueden hacerlo en Tinkercad, pero tendrían que escribir el código en Sketch.

El código quedaría así:

#include <Servo.h>

Servo servo;
int led = 13;
int pinLDR = 0;
int valorLDR = 0;

bool servoAbajo = true;

void setup()
{
  Serial.begin(9600);
  
  pinMode(13, OUTPUT); 
  
  servo.attach(9);
  servo.write(0);
}

void loop()
{
  valorLDR = analogRead(pinLDR);
  digitalWrite(led, HIGH);
  
  Serial.println(valorLDR);
  
  if (valorLDR > 500) {
    if (servoAbajo) {
      servo.write(110);
      servoAbajo = false;
    } else {
      servo.write(70);
      servoAbajo = true;
    }
  	
  } else {
  	servo.write(0);
  }
  
  delay(1000);
}

Si te sirvió el comentario, dale like, así me ayudas y motivas a seguir colaborando. ¡Feliz aprendizaje!

Atentamente: Rapimi95. 😄

Me costaba muchísimo en la universidad entender la programación, no se como pero logré terminar las materias y ahora estoy haciendo mi proyecto de titulación. Y por la desesperación pensé muchas veces en dedicarme a otra cosa, gracias a este curso mi cariño a mi carrera se reactivo y he logrado entender cosas que nunca entendì. No me voy a rendir tan pronto, gracias profe Freddy y gracias Platzi 😃 …

Cuántos más solamente viendo porque no tienen un Arduino? 😄

Hice una pequeña modificación al código conservando el mismo concepto que el original. Está hecho con Sketch (Lenguaje de arduino) para que lo prueben en Tinkercad si no tienen los elementos físicos

#include <Servo.h>

Servo servo;
int led = 13;
int luz = 0;

void setup()
{
  pinMode(led, OUTPUT); // Define el pin 13 como salida
  pinMode(A0, INPUT); // Defino la entrada análoga
  Serial.begin(9600); // Abro el puerto serial en 9600 bps:
  servo.attach(9); // Le indico el pin 9 donde está conectado
  servo.write(0); // Inicio el servomotor en 90°
}

void loop()
{
  digitalWrite(led, HIGH);
  luz = analogRead(A0); // Leo el valor de la foto resistencia
  Serial.println(luz); // Imprimo el valor de   digitalWrite(led, HIGH);
  
  delay(500); // Espero 500ms
  
  if (luz > 300){ // Hay luz
    servo.write(70);
  } else {
    servo.write(0);
  }
  
  digitalWrite(led, LOW);
  delay(500); // Espero 500ms
  
  if (luz > 300){ // Hay luz
    servo.write(110);
  } else {
    servo.write(0);
  }
  
}

A quienes esten usando el simulador tinkercad.com con este código en C mueven el servo

#include <Servo.h>

int led_puerto = 13;
int servo_puerto = 9;
Servo servo;

void setup()
{
  pinMode(led_puerto, OUTPUT);
  servo.attach(servo_puerto);
  servo.write(0);
}

void loop()
{
  servo.write(180);
}

Y el circuito configurado como dijo freddy

Bueno, esto se acabó:
![](

var cinco = require("johnny-five");// classe con la biblioteca J-five
var circuito = new cinco.Board();//instancia con modulos para la placa
var bombilla;
var servo;
var celda;
var turno = 0;

circuito.on("ready", encender);

function encender()
{
  var configuracion = {pin: "A0", freq: 50}//configuracion del sensor objeto jeson
  celda = new cinco.Sensor(configuracion);//instancia con modulos para el sensor

  bombilla = new cinco.Led(13);//instancia con modulos para el led
  bombilla.on();

  servo = new cino.Servo(9);//instancia con modulos para el servo
  servo.to(90);
  ondear();
}

ondear()
{
  console.log("Luz = " + celda.value);
  var luz = celda.value;
  if(luz > 800)
  {
    if(turno){
      turno = 0;
      servo.to(70);
    }
    else{
      turno = 1;
      servo.to(110);
    }
    servo.to(90);
  }
  else
  {
    servo.to(180);
  }
  setTimeout(ondear, 1000);//setTimeout invoca a una funcion de forma recursiva
}```

Espero tener pronto mi kit de Arduino para aplicar todo lo aprendido! 😃
Estas clases han sido lo máximo y me motivan a seguir aprendiendo más.

Adjunto mi código y simulación del ejercicio, aún me falta llevarlo a la práctica…

Sinceramente estoy muy agradecida con todo el equipo de Platzi y con Freddy por compartir este valioso conocimiento (y gratuitamente) los admiro mucho y quisiera poder brindarle esta oportunidad a otras personas (sobre todo acá en mi país, Venezuela), como ustedes lo han hecho conmigo. Me han hecho muy feliz, y son uno de mis mayores motores de inspiración y motivación para continuar con mis estudios y no rendirme. Se les quiere.

Ha sido un excelente curso es mas, diria el mejor de todos para alguien que no sabe nada de programacion. Quiero dar gracias por todo el conocimiento que me otorgó Freddy en este curso lastima se tuviera que acabar.

<strong>Thanks Freddy</strong>

bueno fue genial el curso es muy completo ahora solo debo esperar a que termine la cuarentena y comprar el arduino para poner en práctica todo esto y realizar el último reto que me queda

Esto esta muy genial!!!
yo quiero continuar con alguna carrera de platzi, pero me falta un año para que me puedan hacer prestamos y adquirir la suscripcion anual, les pido a mis padres y la siutacion no da para hacerlo de una 😦, pero pronto tendre ese certificado, gracias por ser mi mentos Freddy.

Muchas gracias Freddy, aprendí mucho más de lo que aprendo en la universidad. Mil gracias!!

WOW, Excelente curso. Aquí les dejo mis apuntes de todo el curso 😄. A por la carrera de IoT ahora 😂

Este es el circuito implementado, funciono a las mil maravillas con el código:
![](

Gracias Freddy. Ha sido muy emocionante, me gradué de Ingeniero Químico hace 7 años y nunca he podido ejercer mas de un año (en Venezuela), a esta altura me he replanteado muchas cosas y decidí aprender a programar y estudiar con ustedes para reenfocarme profesionalmente en este campo. Gracias por todo, siento que he aprendido en un mes mas de lo que me había imaginado.

Muchas gracias por todo, tanto a Freddy como a los que estuvieron en el curso, pude ver como unos se ayudaban a otros a lo largo del curso, espero que pueda ver mas gente así a lo largo de los demás cursos

ANTES DE INICIAR CON LA FOTORESISTENCIA

DESPUES DE QUE PASA EL NIVEL LA FOTORESISTENCIA, ACTIVA EL LED Y EL SERVO

<#include <Servo.h>

int fotoresistor = A0;
int led = 13;
int servoPos = 0;
Servo jjservo;


void setup()
{
  pinMode(led, OUTPUT);
  pinMode(fotoresistor, INPUT);
  jjservo.attach(9);
}

void loop()
{
  jjservo.write(servoPos);
  int medida = digitalRead(fotoresistor);
                         
  if (medida == 1 )/// el valor en voltaje es aproximadamente 2.22 V
  {
    servoPos = 90;
    digitalWrite(led, HIGH);
    delay(300);
    digitalWrite(led, LOW);
    delay(300);
  }
  else
  {
  	digitalWrite(led, LOW);
    servoPos = 0;
  }
  
}>

Aquí mi resultado:
![](

#include<Servo.h>

Servo servo;
int rojo = 13;
int naranja = 11;
int azul = 7;
int luz = 0;

void setup()
{
  pinMode(rojo, OUTPUT); // pin 13  salida led rojo
  pinMode(naranja, OUTPUT);//pin 11 salida led anaranjado
  pinMode(azul, OUTPUT);// pin 7 salida led azul
  pinMode(A0, INPUT); // Defino la entrada análoga
  Serial.begin(9600); // Abro el puerto serial en 9600 bps:
  servo.attach(9); // pin 9 donde está conectado
  servo.write(0); // Inicia el servomotor en 90°
}

void loop()
{
  digitalWrite(rojo, HIGH);
  digitalWrite(naranja, LOW);
  digitalWrite(azul, HIGH);
  luz = analogRead(A0); // Leo el valor de la foto resistencia
  Serial.println(luz); // Imprimo el valor de   digitalWrite(led, HIGH);
  
  delay(500); // 
  
  if (luz > 300){ 
    servo.write(70);
  } else {
    servo.write(0);
  }
  
  digitalWrite(rojo, LOW);
  digitalWrite(naranja, HIGH);
  digitalWrite(azul, LOW);
  delay(500); 
  
  if (luz > 300){
    servo.write(110);
  } else {
    servo.write(0);
  }
  
}```

Verificar en el siguiente enlace:
[](https://www.tinkercad.com/things/25qu2WaTB65-start-simulating/editel?collectionid=OIYJ88OJ3OPN3EA&lessonid=EHD2303J3YPUS5Z&magic=638b523f76dcedce06d8fb4f94f5fdc5a4130698&projectid=OIYJ88OJ3OPN3EA&t=1573883088877849613&tenant=circuits#/lesson-viewer?sharecode=L05ra4orn-6zR9ejAutRFBys4zt6BPMmLXMnSBqLGVM=)

entre mas aprendo cosas nuevas me doy cuenta que en realidad se menos, que buen curso, ahore me voy a hacer el de definitivo de java.

En arduino, el ejemplo de la clase

Mi aporte con código en Sketch 😃

Totalmente agradecido con Freddy, los compañeros del curso y la comunidad Platzi en general, aprender a programar ha sido una de mis mejores experiencias, este curso me ha ayudado a fortalecer mi gusto personal y mi camino profesional, con mucho animo de compartir a otros lo aprendido y seguir fortaleciendo habilidades tecnológicas para estar a la vanguardia de lo que nos espera en un futuro no muy lejano.

estoy creando una pagina para mi escuela que tal voy:
<!DOCTYPE html>
<html lang=“es”>

<head>
<meta charset=“UTF-8”>
<meta name=“viewport” content=“width=device-width, initial-scale=1.0”>
<meta http-equiv=“X-UA-Compatible” content=“ie=edge”>
<title>CBTa #64</title>
<link rel=“shortcut icon” href=“img/cbta64.jpg” type=“image/x-icon”>
<link rel=“stylesheet” href=“css/estilos.css”>
<link href=“https://fonts.googleapis.com/css?family=Open+Sans:300,400,700,800&display=swap” rel=“stylesheet”>
</head>

<body>
<header>
<nav>
<a href=“file:///C:/Users/Manuelprz/Downloads/P%C3%A1gina%20web%20Manuel%20Design/index.html”>Inicio</a>
<a href="">Acerca de</a>
<a href="">Portafolio</a>
</nav>
<section class=“textos-header”>
<h1>EXCELENCIA EDUCATIVA</h1>
<h2>Tu mejor oferta</h2>
</section>
<div class=“wave” style=“height: 150px; overflow: hidden;”><svg viewBox=“0 0 500 150” preserveAspectRatio=“none"
style=“height: 100%; width: 100%;”>
<path d=“M0.00,49.98 C150.00,150.00 349.20,-50.00 500.00,49.98 L500.00,150.00 L0.00,150.00 Z"
style=“stroke: none; fill: #fff;”></path>
</svg></div>
</header>
<main>
<section class=“contenedor sobre-nosotros”>
<h2 class=“titulo”>Nuestra Institución</h2>
<div class=“contenedor-sobre-nosotros”>
<img src=“img/ilustracion2.svg” alt=”” class=“imagen-about-us”>
<div class=“contenido-textos”>
<h3><span>1</span>carreras disponibles</h3>
<strong></strong><p>tecnico en ofimatica</p></strong>
<strong><p>tecnico en desarrollo sustentable</p></strong>
<h3><span>2</span>Formacion Academica</h3>
<p>En la institucion aprenderemos a desarrollar habilidades y destrezas en el ambito social,educativo y demas.</p>
</div>
</div>
</section>
<section class=“portafolio”>
<div class=“contenedor”>
<h2 class=“titulo”>Portafolio</h2>
<div class=“galeria-port”>
<div class=“imagen-port”>
<img src=“img/img1.jpg” alt="">
<div class=“hover-galeria”>
<img src=“img/icono1.png” alt="">
<p>Nuestro trabajo</p>
</div>
</div>
<div class=“imagen-port”>
<img src=“img/img2.jpg” alt="">
<div class=“hover-galeria”>
<img src=“img/icono1.png” alt="">
<p>Nuestro trabajo</p>
</div>
</div>
<div class=“imagen-port”>
<img src=“img/img3.jpg” alt="">
<div class=“hover-galeria”>
<img src=“img/icono1.png” alt="">
<p>Nuestro trabajo</p>
</div>
</div>
<div class=“imagen-port”>
<img src=“img/img8.jpg” alt="">
<div class=“hover-galeria”>
<img src=“img/icono1.png” alt="">
<p>Nuestro trabajo</p>
</div>
</div>
<div class=“imagen-port”>
<img src=“img/img4.jpg” alt="">
<div class=“hover-galeria”>
<img src=“img/icono1.png” alt="">
<p>Nuestro trabajo</p>
</div>
</div>
<div class=“imagen-port”>
<img src=“img/img5.jpg” alt="">
<div class=“hover-galeria”>
<img src=“img/icono1.png” alt="">
<p>Nuestro trabajo</p>
</div>
</div>
<div class=“imagen-port”>
<img src=“img/img6.jpg” alt="">
<div class=“hover-galeria”>
<img src=“img/icono1.png” alt="">
<p>Nuestro trabajo</p>
</div>
</div>
<div class=“imagen-port”>
<img src=“img/img7.jpg” alt="">
<div class=“hover-galeria”>
<img src=“img/icono1.png” alt="">
<p>Nuestro trabajo</p>
</div>
</div>
</div>
</div>
</section>
<section class=“clientes contenedor”>
<h2 class=“titulo”>Que dicen nuestros alumnos</h2>
<div class=“cards”>
<div class=“card”>
<img src=“img/face1.jpg” alt="">
<div class=“contenido-texto-card”>
<h4>Juan</h4>
<p>La escuela es lo bastante buena para ofrecer la mejor calidad respecto a educacion y formacion profesional, formen parte de el CBTa #64</p>
</div>
</div>
<div class=“card”>
<img src=“img/face2.jpg” alt="">
<div class=“contenido-texto-card”>
<h4>Emy</h4>
<p>Cuenta con el estandar necesario de estudio con unos profesores lo bastante preparados para dar a conocer sus clases adecuadamente</p>
</div>
</div>
</div>
</section>
<section class=“about-services”>
<div class=“contenedor”>
<h2 class=“titulo”>Actividades Extracurriculares</h2>
<div class=“servicio-cont”>
<div class=“servicio-ind”>
<img src=“img/ilustracion1.svg” alt="">
<h3>Banda de Guerra</h3>
<p>forma parte de la banda de guerra y participa en diversos concursos a nivel estatal</p>
</div>
<div class=“servicio-ind”>
<img src=“img/ilustracion4.svg” alt="">
<h3>Equipo de futbol</h3>
<p>Forma parte de nuestro equipo de futbol y acude a competencias para asi lograr participaciones a nivel estado</p>
</div>
<div class=“servicio-ind”>
<img src=“img/ilustracion3.svg” alt="">
<h3>Escolta de bandera</h3>
<p>adentrate en nuestra escolta de bandera y participa en competencias estatales</p>
</div>
</div>
</div>
</section>
</main>
<footer>
<div class=“contenedor-footer”>
<div class=“content-foo”>
<h4>celular</h4>
<p>6495260048</p>
</div>
<div class=“content-foo”>
<h4>pagina</h4>
<p>https://www.facebook.com/cbta64/</p>
</div>
<div class=“content-foo”>
<h4>Localidad</h4>
<p>Santa Maria del Oro, Durango</p>
</div>
</div>
<h2 class=“titulo-final”>© Manuel Design | Manuel Pererz</h2>
</footer>
</body>

</html>

estilos

  • {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    }

body {
font-family: ‘open sans’;
}

.contenedor {
padding: 60px 0;
width: 90%;
max-width: 1000px;
margin: auto;
overflow: hidden;
}

.titulo {
color: #642a73;
font-size: 30px;
text-align: center;
margin-bottom: 60px;
}

/* Header */

header {
width: 100%;
height: 600px;
background: #bc4e9c;
/* fallback for old browsers /
background: -webkit-linear-gradient(to right, hsla(340, 95%, 50%, 0.459), hsla(317, 45%, 52%, 0.664)), url(…/img/portada.jpg);
/
Chrome 10-25, Safari 5.1-6 /
background: linear-gradient(to right, hsla(340, 95%, 50%, 0.459), hsla(317, 45%, 52%, 0.664)), url(…/img/portada.jpg);
/
W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */
background-size: cover;
background-attachment: fixed;
position: relative;
}

nav{
text-align: right;
padding: 30px 50px 0 0;
}

nav > a{
color:#fff;
font-weight: 300;
text-decoration: none;
margin-right: 10px;
}

nav > a:hover{
text-decoration: underline;
}

header .textos-header{
display: flex;
height: 430px;
width: 100%;
align-items: center;
justify-content: center;
flex-direction: column;
text-align: center;
}

.textos-header h1{
font-size: 50px;
color:#fff;
}

.textos-header h2{
font-size: 30px;
font-weight: 300;
color:#fff;
}

.wave{
position: absolute;
bottom: 0;
width: 100%;
}

/* About us */

main .sobre-nosotros{
padding: 30px 0 60px 0;
}
.contenedor-sobre-nosotros{
display: flex;
justify-content: space-evenly;
}

.imagen-about-us{
width: 48%;
}

.sobre-nosotros .contenido-textos{
width: 48%;
}

.contenido-textos h3{
margin-bottom: 15px;
}

.contenido-textos h3 span{
background: #4d0686;
color: #fff;
border-radius: 50%;
display: inline-block;
text-align: center;
width: 30px;
height: 30px;
padding: 2px;
box-shadow: 0 0 6px 0 rgba(0, 0, 0, .5);
margin-right: 5px;
}

.contenido-textos p{
padding: 0px 0px 30px 15px;
font-weight: 300;
text-align: justify;
}
.contenido-textos p{
padding: 0px 0px 30px 15px;
font-weight: 300;
text-align: justify;
}
/* Galeria */

.portafolio{
background: #f2f2f2;
}

.galeria-port{
display: flex;
justify-content: space-evenly;
flex-wrap: wrap;
}

.imagen-port{
width: 24%;
margin-bottom: 10px;
overflow: hidden;
position: relative;
cursor: pointer;
box-shadow: 0 0 6px 0 rgba(0, 0, 0, .5);
}

.imagen-port > img{
width: 100%;
height: 100%;
object-fit: cover;
display: block;
}

.hover-galeria{
position: absolute;
width: 100%;
height: 100%;
top: 0;
transform: scale(0);
background: hsla(273,91%,27%, 0.7);
transition: transform .5s;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}

.hover-galeria img{
width: 50px;
}

.hover-galeria p{
color: #fff;
}

.imagen-port:hover .hover-galeria{
transform: scale(1);
}

/* Clients */

.cards{
display: flex;
justify-content: space-evenly;
}

.cards .card{
background: #4d0686;
display: flex;
width: 46%;
height: 200px;
align-items: center;
justify-content: space-evenly;
border-radius: 5px;
box-shadow: 0 0 6px 0 rgba(0, 0, 0, 0.6);
}

.cards .card img{
width: 100px;
height: 100px;
object-fit: cover;
border: 3px solid #fff;
border-radius: 50%;
display: block;
}

.cards .card > .contenido-texto-card{
width: 60%;
color: #fff;
}

.cards .card > .contenido-texto-card p{
font-weight: 300;
padding-top: 5px;
}

/* Our team */

.about-services{
background: #f2f2f2;
padding-bottom: 30px;
}

.servicio-cont{
display:flex;
justify-content: space-between;
align-items: center;
}

.servicio-ind{
width: 28%;
text-align: center;
}

.servicio-ind img{
width: 90%;
}

.servicio-ind h3{
margin: 10px 0;
}

.servicio-ind p{
font-weight: 300;
text-align: justify;
}

/* footer */

footer{
background: #414141;
padding: 60px 0 30px 0;
margin: auto;
overflow: hidden;
}

.contenedor-footer{
display: flex;
width: 90%;
justify-content: space-evenly;
margin: auto;
padding-bottom: 50px;
border-bottom: 1px solid #ccc;
}

.content-foo{
text-align: center;
}

.content-foo h4{
color: #fff;
border-bottom: 3px solid #af20d3;
padding-bottom: 5px;
margin-bottom: 10px;
}

.content-foo p{
color: #ccc;
}

.titulo-final{
text-align: center;
font-size: 24px;
margin: 20px 0 0 0;
color: #9e9797;
}

@media screen and (max-width:900px){
header{
background-position: center;
}

.contenedor-sobre-nosotros{
    flex-direction: column;
    justify-content: center;
    align-items: center;
}

.sobre-nosotros .contenido-textos{
    width: 90%;
}

.imagen-about-us{
    width: 90%;
}

/* Galeria */

.imagen-port{
    width: 44%;
}

/* Clientes */

.cards{
    flex-direction: column;
    justify-content: center;
    align-items: center;
}

.cards .card{
    width: 90%;
}

.cards .card:first-child{
    margin-bottom: 30px;
}

/* servicios */

.servicio-cont{
    justify-content: center;
    flex-direction: column;
}

.servicio-ind{
    width: 100%;
    text-align: center;
}

.servicio-ind:nth-child(1), .servicio-ind:nth-child(2){
    margin-bottom: 60px;
}

.servicio-ind img{
    width: 90%;
}

}

@media screen and (max-width:500px){
nav{
text-align: center;
padding: 30px 0 0 0;
}

nav > a{
    margin-right: 5px;
}

.textos-header h1{
    font-size: 35px;
}

.textos-header h2{
    font-size: 20px;
}

/* ABOUT US */

.imagen-about-us{
    margin-bottom: 60px;
    width: 99%;
}

.sobre-nosotros .contenido-textos{
    width: 95%;
}

/* Galeria */

.imagen-port{
    width: 95%;
}

/* Clients */

.cards .card{
    height: 450px;
    display: flex;
    flex-direction: column;
    align-items: center;
}

.cards .card img{
    width: 90px;
    height: 90px;
}

/* Footer */

.contenedor-footer{
    flex-direction: column;
    border: none;
}

.content-foo{
    margin-bottom: 20px;
    text-align: center;
}

.content-foo h4{
    border: none;
}

.content-foo p{
    color: #ccc;
    border-bottom: 1px solid #f2f2f2;
    padding-bottom: 20px;
}

.titulo-final{
    font-size: 20px;
}

}

y necesito saber como enlazar otra pagina html con estilos ya que al enlazarla me aparce sin estilos y sin imagenes, es algo que no recuerdo como hacer

function Confusión ()
{
Estoy un poco perdido por tantas palabras. Pero vuelvo a verlo y entiendo.
}

Un proyecto simple pero muy inspirador, sobretodo para realizar proyectos en casa 😉

INTERESANTE
PDTA: ME FALTA ARDUINO JEJEXD

A pesar de no tener el arduino fisico, utilice un simulador y buscando en internet logre programarlo para hacer lo que indicaba fredy en la primera parte.

Codigo en arduino:

#include <Servo.h> //Importar libreria

Servo myservo; //Crear objeto del tipo servo
int pulsomin = 1000; // 1 milisegundo equivale a 1000 microsegundos (0 grados)
int pulsomax = 2000; // 2 milisegundos equivale a 2000 microsegundos (180 grados)

int valorSensor = 0;
const int pinsensor = A0;

int ms = 100;
void setup()
{
  pinMode(13, OUTPUT);
  myservo.attach(9, pulsomin, pulsomax); //inicializar el servo, primer parametro el pin, luego valor del pulso minimo y luego valor del pulso maximo.
  
  Serial.begin(9600);
}


void loop()
{
  valorSensor = analogRead(pinsensor);
  Serial.print("Valor del sensor: ");
  Serial.println(valorSensor);
    
  if (valorSensor >= 500) {
    digitalWrite(13, LOW); //Apagamos el led cuando detecta mucha luz
    myservo.write(0); // funcion write envia el angulo al cual debe posicionarse el servo
  
  }
  else {
    myservo.write(180);
    digitalWrite(13, HIGH); //Prendemos el led cuando detecta poca luz.
  };```


Excelente curso, muchísimas gracias, Freddy. Mi objetivo es el frontend como mayor fuerte y backend como el otro.

Todo en un solo if.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        var BancoCliente = 'BOD';
        var CuentaCliente = true;
        var saldo = 100;
        var BancoDestino = prompt('Ingresa Banco de destino');
        var CuentaDestino = true;
        var Hora = new Date();
        var Costo = 0;
        var Monto = parseInt(prompt('Ingresa monto'));
        
        if (Hora.getHours() > 9 && Hora.getHours() < 12 || Hora.getHours() > 15 && Hora.getHours() < 20){
            if(CuentaCliente && CuentaDestino){
                if (BancoCliente == BancoDestino){
                    Costo = 0;
                }
                else {
                    Costo = 5;
                }
                Monto += Costo;
                if (saldo > Monto){
                    alert('Transaccion exitosa');
                }
                else{
                    alert('Saldo insuficiente');
                }
            }
            else{
                alert('Cuenta no verificada');
            }
        }
        else {
            alert('Hora invalida');
        ```

Hola. Se puede leer o escribir variables de arduino desde una aplicación web? Cual sería el camino? El problema de usar firmata es que no se puede aprovechar la potencia de procesador para que el hardware funcione independientemente de la conexión hacia un ordenador. Junto a un colega nos dedicamos a realizar desarrollos electrónicos como el que adjunto en imagen (un equipo para electrodeposición de cobre en desarrollo) . Por ejemplo en este caso el arduino se comunica a una HMI y maneja un inversor según parámetros cargados en HMI y queremos leer y graficar valores en una pc solo de ser requeridos por el usuario, es decir el equipo debe funcionar de forma autónoma.

Un profesor excelente, todo el curso magnifico, eternamente agradecido y felicidades para todos en platzi !

#include<Servo.h>


const long A = 1000;     //Resistencia en oscuridad en KΩ
const int B = 15;        //Resistencia a la luz (10 Lux) en KΩ
const int Rc = 10; 

Servo servoMotor;
const int LDRPin = A0;
int ilumi;
int foto;
int turno;

void setup()
{
  pinMode(13, OUTPUT);
  pinMode(LDRPin,INPUT);
  servoMotor.attach(9);
}

void loop()
{
  foto = analogRead(LDRPin);
  digitalWrite(13, HIGH);
  delay(500); // medio segundo
  digitalWrite(13, LOW);
  delay(500); // medio segundo
  
  
  ilumi = ((long)foto*A*10)/((long)B*Rc*(1024-foto)); //calcular la intensidad de luz
  ondear();
}

void ondear(){
	int luz  =   ilumi;
  if(luz > 800){
    if(turno == 1){
      turno =0;
      servoMotor.write(70);
  	  delay(500);
    }else{
      turno = 1;
      servoMotor.write(110);
  	  delay(500);
    }
  }else{
    servoMotor.write(150);
  	delay(500);
  }
 // ondear();
}```

¡Nunca pensé que iba a programar un arduino con un curso de programación básica! Tuve que hacerlo en el simulador Tinkercad, fue un reto complicado, pero me siento super contento y emocionado de haber cumplido este y todos los demás retos del curso.

En mi circuito, usando un sensor de temperatura, se activa (pardea) un led rojo a modo de alarma y automáticamente se mueve un servo (simulando la acción de abrir la llave de agua).

ENLACE AL DISEÑO EN TINKERCAD

La verdad es que estoy bastante agradecido por haber cursado este curso. Tan pronto vuelva a tener recursos, vendré a devorarme todos los cursos que pueda, sobretodo ese de Biología Extraterrestre jajaja

Sr. John Freddy, muy buenas tardes,

Muy agradecido estoy por la oportunidad de reforzar mis conocimientos con este curso.

Excelente contenido, metodología, algo muy distinto a los cursos online que he participado.

Quedo con mucha expectativa con los cursos que tomaré.

Muchos éxitos para Platzi.

Hola, para todas las personas de Lima-Perú todas las piezas lo encuentran en paruro con leticia.
Ahi pueden encontrar mas proyectos interesantes como este como drones, sumobots y mas.
Saludos.

Yo hice lo mismo pero con PHP y fue un INFIERNO jajajaja, se ve increible como lo hizo, y la forma de explicarlo. Me hubiera gustado ver este video antes de hacer aquel proyecto para usar node.

Muchas gracias por el curso Freddy, la verdad que en cuanto tenga la oportunidad me voy a inscribir a los cursos de Platzi, he aprendido mucho contigo y estoy más que seguro que todos los profesores que son parte de tu equipo tiene una gran calidad de conocimientos y enseñanzas para todos los que decidan tomar el camino de nunca parar de aprender, los últimos ejemplos que explicaste con Arduino los entendí perfectamente, de momento no puedo probarlos pero la verdad estoy muy emocionado de que me hallas hecho una introducción a los lenguajes javascript, java, C entre otros muchos cursos que ustedes imparten, yo los sigo por YouTube todo el tiempo y por mi parte siempre estarán más que recomendados, gracias por todo lo que haces.

Saludos, aqui les dejo my proyecto realizado sin arduino, hecho en tinkercad, prodan ver el proyecto en bloques y codigo, deben dar luz al fotoresistor haciendo click sobre el para ver como se mueve el servo:

https://www.tinkercad.com/things/lKsWsh8nMx3-cool-rottis/editel?sharecode=FXYwqQ8JOfF26zyNhDek9qGm8drk-JnSIjnMrz0EFno

Freddy cantando el himno de México jajajaja

Yo ya programo a un nivel un poco mas alto, sin embargo tome este curso porque queria reforzar las bases de programacion y resulta que aprendi muchas cosas nuevas, sin duda los cursos de Platzi valen la pena cuando les ponemos dedicacion y cuando amamos la tecnologia siempre sera muy emocionando el aprendizaje aunque sea solo de prender un led. Por mas pequeño que sea el aprendizaje siempre que nos apacione lo que hacemos, seremos tan felices

El prender un led con un Arduino es el inicio de un camino para crear scainet que fabricara robots para hacer del mundo un mundo mejor.

el reto terminado , 2021
https://www.youtube.com/watch?v=CUJIwaK_-vA

es mi intento ojala a alguien le pueda ayudar

De verdad felicito al equipo, yo vengo del sector industrial el cual me ha dejado muchas ideas de software industrial con estas actividades ya tengo como materializar todas esas ideas .

gracias por darme ideas de proyectos

Gracias por todo, Freddy!

No crei posible que en este curso de programacion iba a realizar cosas tan increibles como crear un robot, no quiero imaginarme lo que me espera en los cursos avanzados¡¡¡¡

Que emoción, estoy que grito en plena madrugada :v , definitivamente esto es lo que me gusta!

Muchísimas gracias por tu tiempo, seguimos con los cursos aprendiendo. Platzi!

Ahora a conseguir un arduino para poder aplicar esto!

Muchas gracias señor Freddy.

Usted ha sido un excelente maestro.

Muchas gracias Freddy y TeamPlatzi! Excelente curso.
Su pasión contagia.
Nos volveremos a ver.
Fuerte abrazo.

Bonísimo

Muchas gracias por el curso, pronto compraré el arduino y subire los retos.

Es increíble la emoción que da poder lograr completar el proyecto, por que en este punto en ves de ver y seguir los pasos escuchas lo que dicen y se te ocurren distintas formas de hacerlo, a pesar que no lo logre conectar a java realice el trabajo en C, con las bases dadas y un poco de info puedes hacerlo.

Dejo link que os puede ayudar a entender mejor C y completarlo ¡No se desanimen!

https://educarparaelcambio.com/arduino/reto-9-el-sensor-de-luz-ldr-otro-input-analogico/
https://hetpro-store.com/TUTORIALES/servomotor-arduino/

Lo comento por que en un punto estaba por rendirme pero sus comentarios me ayudaron, este es el codigo.
.


FREDDY y TODO EL EQUIPO PLATZI:

GRACIAS!!!

Me encantó este curso… y siendo ingeniero electrónico me encantó el final porque fue volver a mis clases de sistemas embebidos pero con un toque mas computacional como lo es el hecho de programar un arduino con JS!!!.. Super!, mil gracias.

Me ha funcionado muy bien. Solo Tuve que realizar algunos malabares para hacerlo funcionar. En el curso pasado mucha gente coloco soluciones por si tienen problemas.

Si no tienen el sensor de humedad, pueden realizar uno casero simplemente pelando dos cables y hundiendo los dos extremos a tierra en la maceta lo mas profundo posible. Si no hay un flujo de electrones entre ellos, querrá decir que la tierra de la planta esta seca y necesitan regarla.

Quiero darte las gracias Freddy y a todo el grupo de platzi por meterme en este maravilloso mundo, termino el curso con ganas de aprender mas, denuevo gracias por todo.

var j = require("johnny-five");
var circuito = new j.Board();
var bombillo, motorcito, celda;
var turno = 0;

circuito.on("ready", prender);

function prender()
{
  var configuracion = {pin: "A0", freq: 50}
  celda = new j.Sensor(configuracion);

  bombillo = new j.Led(13);
  bombillo.on();

  motorcito = new j.Servo(9);
  motorcito.to(90)
  ondear();

}

function ondear()
{
  console.log("Luz: " + celda.value);
  var luz = celda.value;
  if(luz > 800)
  {
      if(turno == 1)
    {
      turno = 0;
      motorcito.to(70);
  }
}
  else
  {
    turno = 1;
    motorcito.to(110);
  }

  setTimeout(ondear, 1000);
}

Hasta este año 2022 yo ya tengo al rededor de 4 años de trabajo con código, sin embargo, este curso me ayudo a reaprender diversos conocimientos e incluso a aprender nuevos, así mismo, este curso me motivo a seguir aprendiendo día a día sobre este campo, espero mejorar con el pasar del tiempo y en el futuro no tan lejano terminar la escuela de desarrollo web, Gracias platzi!

No se si leas esto Freddy, sin embargo muchas gracias por crear platzi, muchas gracias por hacerme creer en la programacion, y mas aun, muchas gracias por hacerme creer en mi de nueva cuenta!

Freddy traiciono su patria por no poner la bandera de México 😕

Gracias a los aportes de los compañeros por hacer de esta clase algo constructivo para los que solo tenemos emulador.

Me emocione mucho con tus últimas palabras…

Gracias Freddy y gracias team Platzi ❤️

súper agradecido con este curso, me encanto y me motivo a comenzar mis propios proyectos. el mejor profesor que he tenido

Gracias por todo Freddy eres el mejor profesor de programación, saludos desde Venezuela

Excelente 🤖

simplemente gracias.

Lo que amé del curso: La inspiración que hierve con cada clase tan desmenuzada, fácil y práctica. No es simplista, es un abrebocas inmenso al maravilloso mundo de la programación. Quiero comenzar a aprender JavaScript y demás tecnologías web, crear sitios web pro, aprender IA, desarrollar aplicaciones, profundizar en estructuras de datos y algoritmos complejos, y finalmente para nutrir e inspirar quiero impartir ese conocimiento a otras personas.

Lo más valioso al comenzar este camino es interiorizar hasta dónde queremos llegar, cada uno tiene sus propias razones para crear código, ¿cuáles son las tuyas?

¡Gracias Platzi!

Me encantó el curso, no pude seguir el arduino porque no tenía uno:( Pero en cuanto lo tenga lo repasaré y crearé cosas increíbles:D

de hecho esta increible
eres un gran profesor freddy realmente lo eres y yo creia que ALVARO FELIPE era bueno, tu tambien lo eres

Encontrar inspiración a los 30 años es difícil, este señor lo logró…

Excelente ejercicio, obviamente cuando tengo un arduino fisico aplicare este ejercicio, FREDDY gracias por hacer que las clases sean faciles. anexo mi ejercicio.!!

Así quedo mi montaje, hecho en tinkercad.

El código:

<#include <Servo.h>

Servo servo_9;
int analogPin = A0;
int ldr;
int pos = 0;

void setup()
{
  pinMode(13, OUTPUT);
  servo_9.attach(9);
  Serial.begin(9600);
 
}

void loop()
{
  digitalWrite(13, HIGH);
  delay(500);
  digitalWrite(13, LOW);
  delay(300); 
  ldr = analogRead(analogPin);
  Serial.println(ldr);
  
  if (ldr > 200)
  {
    if (pos == 1)
    {
      pos = 0;
      servo_9.write(70);
    }
    else
    {
      pos = 1;
      servo_9.write(100);
    }
  }
  else 
  {
    servo_9.write (160);
  }

}> 

Por si les interesa echarle un vistazo:
https://www.tinkercad.com/things/9QHrtMhF3wR

Platzi ah sido un grandioso recurso para romper esquemas.

Como no tengo un arduino (por el momento), realice el código en sketch y luego lo pase a tinkercard, en donde realice el diagrama de conexiones del arduino.

CONEXIONES

CÓDIGO

// LED
int bombillo = 13;

// SERVOMOTOR
// Conectar con el servo
#include <Servo.h>
Servo motorcito; //Crea un objeto servo para controlar el servo
int pos = 90; //Posición del servo
int turno = 0; // Variable necesaria en la función ondear

// FOTORESISTENCIA
int pinFotoResistencia = 0; 
int luz;
int timeOut = 1000; // Variable necesaria en la función ondear

void setup() {
  // LED
  pinMode(bombillo, OUTPUT);

  // SERVOMOTOR
  motorcito.attach(9); //Asigna el pin donde se conecta el servo

  // FOTORESISTENCIA
  // Configuración Puerto Serial para el funcionamiento de la fotoresistencia
  Serial.begin(9600);
  pinMode(pinFotoResistencia, INPUT);
}

void loop() {
  // LED
  digitalWrite(bombillo,HIGH);

  // SERVOMOTOR
  motorcito.write(pos); //Posición en que se coloca el servo

  // Función para ondear la bandera
  ondear();
}

// ONDEAR: Función que mueve constantemente el servo cuando se supera un valor de la 
// fotoresistencia y mantiene una posición cuando esta por debajo del valor. Este es
// una función recursiva
void ondear()
{
    
    // luz guarda el valor que ingresa al pin analogo debido a la luz percibida por
    // la fotoresistencia
    luz = analogRead(pinFotoResistencia);
    // Devolver el valor leido por el serial en el IDE de Arduino
    Serial.println(luz);

    // Si el valor de la fotoresistencia supera 800, se mueve el servo, de lo contrario
    // se mantiene en una misma posición
    if (luz > 800)
    {
      if (turno == 1)
      {
        turno = 0;
        motorcito.write(70);
      }
      else
      {
        turno = 1;
        motorcito.write(110);
      }
    }
    else
    {
      motorcito.write(150);
    }

    // Tiempo de espera para volver a llamar a la misma función
    delay(timeOut);
    ondear();
}

Espero que sea de gran ayuda 😃

Freddy gracias por la dedicación, por la constante motivación e inspiración. Este curso fue la chispa que detono mi interés por la programación. Pase de descubrir platzi por Youtube y ver sus videos a ser un estudiante activo con suscripción en la plataforma, lo mas importante es que me generan confianza y siento que estoy aprendiendo gran cantidad de cosas nuevas cada dia, felicidades para totos los que estamos aca, \o/

Muchas gracias por compartir el conocimiento.Ya he recomendado este curso a tres familiares y muy pronto lo hare con mis amigos .

Sí a ustedes les sale este error, el problema es el COM en el código
.

C:\Users\Seba-PC\Progra\Platzi\Programación basica\ArduiNode>node leds
C:\Users\Seba-PC\Progra\Platzi\Programación basica\ArduiNode\node_modules\bindings\bindings.js:135
  throw err;
  ^

Error: Could not locate the bindings file. Tried:
 → C:\Users\Seba-PC\Progra\Platzi\Programación basica\ArduiNode\node_modules\johnny-five\node_modules\@serialport\bindings\build\bindings.node

.
Han habido cambios en como se escribe el código en Johnny Five, se soluciona así:

//Así es el código original y falla
var jf = require("johnny-five");
var circuito = new jf.Board();

//Así tiene que quedar, ahora (Febrero 2021) hay que incluir en la .Board el puerto COM al que esta conectado el Arduino. Por su puesto tu tienes que colocar el COM que te dice en tu computador
var jf = require("johnny-five");
var circuito = new jf.Board({ port: "COM5" });

.
¿Cómo saber mi COM? en el arduino te dice a cual esta conectado.
.

se le ve la emocion a Freddy por la electronica y la programacion juntos

Que gran curso! y sobre todo que gran Profesor!

kisto para empezar los cursos de programcion en platzi que emocion

Muchisimas gracias Freddy por siempre motivarnos para seguir aprendiendo!, estoy muy convencido de que mi suscripción a Platzi valdrá totalmente la pena!

Buenas a todos, lo que hizo Freddy en el circuito es un divisor de voltaje en un circuito en serie, lo que en realidad lee el puerto analogo del arduino es esa variacion de voltaje al variar la resistencia del LDR que tambien depende de la cantidad de luz. Gracia Freddy, excelente curso.

gracias

buen video

ya casi consigo usar el simulador de Arduino para hacer todo este circuito 😄

Aquí les dejo mi simulación, el código es el mismo, saludos!!!

Para los que lo realizan en la simulación de tinkercad les dejo el código que pueden usar en la pagina (NOTA: Tiene que hacer click en el fotoreceptor al iniciar la simulación para cambiar la variación de luz)

#include <Servo.h>

int sensorValue = 0;

int girador = 0;

Servo servo_9;

void setup()
{
  pinMode(13, OUTPUT);
  pinMode(A0, INPUT);
  Serial.begin(9600);

  servo_9.attach(9);

}

void loop()
{
  digitalWrite(13, HIGH);
  sensorValue = analogRead(A0);
  Serial.println(sensorValue);
  if (sensorValue > 500) {
    if (girador == 1) {
      girador = 0;
      servo_9.write(150);
      delay(2000); // Wait for 2000 millisecond(s)
    } else {
      girador = 1;
      servo_9.write(30);
      delay(2000); // Wait for 2000 millisecond(s)
    }
  }
}```

![](https://ibb.co/zRRnHmb) Esta es la imagen del diseño

Hola. En primer lugar muchas gracias por este curso de programación básica, siento que vi muchas cosas nuevas e interesantes, voy a volver atras a repasar un poco mas para no olvidarlas 😃
Aqui dejo lo que hice en Arduino, o hice en un simulador y me hubiera encantado poder tenerlo en fisico.
Otra cosa es que encontre mucho mas sencillo hacerlo en lenguaje C o como se programa en el simulador y en el Arduino que lo que veia que hacia Feddy en java script. Mi codigo me resulto mas corto y facil de entender 😄
Aqui lo dejo 😃

#include <Servo.h>


Servo servomotor;
int sensor = A0;
int var;


void setup()
{
  Serial.begin(9600);
  
  pinMode(13, OUTPUT);
  pinMode(9,OUTPUT);
  pinMode(A0,INPUT);
  
  servomotor.attach(9);
}


void loop()
{
  var = analogRead(0);
 
  if(var < 400)
  {
    servomotor.write(0);
     digitalWrite(13,LOW);
  }
  else
  {
   
    digitalWrite(13,HIGH);
    servomotor.write(80);
    delay(1000);
    servomotor.write(180);
    delay(1000);
  }

Serial.println(var);

}

https://www.tinkercad.com/things/2GRlTQ6qU2g-brilliant-habbi-kup/editel

en verdad que a pesar de ser un curso basico de programacion esta muy completo y entre mas avanzas te impresiona lo bueno que es a pesar de ser gratis)

Se puede hacer completamente con el emulador? Trate de ponerle el codigo del entorno de arduino y me dio errores.

Les comparto éste link, ¡seguro les va a interesar!
https://platzi.com/blog/conoce-personas-increibles-como-tu/

pues si, ya me ha metido en ganas de comprarme un arduino y empezar a automatizar la casa

Alguien mas se dio cuenta que dijo 190 y el servo solo tiene hasta 180?

Antes de realizar el curso tenía dudas acerca de suscribirme a Platzi, pero ahora estoy convencido de que definitivamente es de las mejores inversiones que podría hacer.

¡Feliz aprendizaje!**_
Atentamente: Rapimi95. 😄

muchas gracias freddy por el curso que nos regalastes, me ayudastes full encontrar el lado divertido de la programación, gracias a ti me adentre a este mundo, que profesores de hace años no me hiceron ver. (posdata: termine el curso en 22 dias jajaja porque pague el expert y vi que era gratis, y no queria demorar tanto para empezar los de pago ajjajaa aun asi aprendi full pero claro cada dia demoraba en 5 horas a 10 horas XD

Gracias

Este es el código de color de las resistencias del que Freddy habla: