📅 Tal día como hoy 14 de diciembre... ¿QUÉ PASÓ?
Cursos Gratis Stories
Ganar Dinero Internet
Android Stories
Windows Stories
iOS Stories
MacOS Stories
Linux Stories
Facebook Stories
Amazon Stories
Netflix Stories
Whatsapp Stories
Twitch Stories
Instagram Stories
YouTube Stories
Gmail Stories
TikTok Stories
Arduino Stories
Telegram Stories
Raspberry Pi Stories

Arduino Zero: ¿Qué es, para qué sirve y en qué proyectos de desarrollo puede utilizarse?

ACTUALIZADO ✅ ¿Quieres conocer acerca de las platas Arduino ZERO y cómo trabajar con ellas? ⭐ ENTRA AQUÍ ⭐ y Aprende Todo ✅ DESDE CERO ✅

La placa Arduino ZERO está pensada para aquellos usuarios que ejecutan proyectos que no soportan las clásicas Arduino UNO. Esto se debe a la capacidad de procesamiento que tiene el MCU, la memoria flash y el reloj CPU.

Debido a esto es importante que conozcas qué son las Arduino ZERO y para qué sirven estas placas en electrónica. Esta información la podrás encontrar en los párrafos de este artículo.

Además, te mostraremos las características principales que tiene la placa y los criterios que debes tener en cuenta al trabajar con las Arduino ZERO. Echa un vistazo a esta potente placa.

publicidad

¿Qué son las Arduino Zero y para qué sirven estas placas de desarrollo en electrónica?

La placa Arduino ZERO es un dispositivo que cuenta con un bus electrónico que incluye un MCU ATMEL Cortex-M0 SAMD21 de 32 bits de núcleo. Se caracteriza por tener una depuración de programas, o debug, haciendo que sea posible para el usuario no necesitar de ningún hardware externo.

publicidad

Cuenta con toda la tecnología necesaria para trabajar en proyectos de Internet de las Cosas. Es necesario aclarar que su funcionamiento es un poco más bajo que el de otras placas, ya que la tensión que soporta es de 3.3V. Todos los pines, excepto el 4, trabajan con interrupciones externas de tipo 0 y 1. Por otro lado, la corriente continua, tanto de entrada de entrada como de salida, es de 7 mA y la velocidad del reloj del CPU llega a los 48 MHz.

Características ¿Cuáles son las principales prestaciones de esta placa de Arduino?

Características ¿Cuáles son las principales prestaciones de esta placa de Arduino?

Las características principales que tiene esta placa de Arduino son: 

  • Es ideal para trabajar en robótica, en la automatización y en proyectos de tecnología.
  • Posee un depurador incrustado que se conecta con el hardware del MCU con lo cual se puede programar el SAMD21 por medio de una interfaz SWD. Esto también permite acceder de manera completa al microcontrolador y trabajar con los códigos de los programas para modificarlos.
  • La alimentación externa que tiene Arduino ZERO se realiza por medio de un conector de centro-positivo o por los pines GND y VIN es ubican en la cabecera de este conector de 2,1 mm. Esto quiere decir que no hay un puerto USB para alimentar la placa.
  • Los PWM son 3, 4, 5, 6, 8, 9, 10, 11, 12 y 13; mientras que las entradas analógicas se encuentran en A0 a A5. La tensión de salida está en el DAC, el cual es el canal A0.
  • El SPI se ubica en SS, MOSI, MISO y SCK de la palca.
  • Posee un reloj que trabaja 48MHz, por lo que se puede contar el tiempo real y el calendario.

¿Qué debo tener en cuenta al trabajar con las placas Arduino ZERO?

¿Qué debo tener en cuenta al trabajar con las placas Arduino ZERO?

Lo primero que debes saber es que la placa Arduino ZERO trabaja con una tensión de 3.3V, un poco más baja que el resto de las otras placas. Por tal motivo debe tener en cuenta esta restricción porque podrías quemar el microprocesador y otros componentes. Cuando trabajas en el IDE y abres el monitor, los microcontroladores y la ejecución del boceto no se reinician, por lo que deberás reiniciar el proceso por medio de un botón que encontrarás en el tablero del software de Arduino.

La alimentación no se realiza por medio de una entrada USB, lo cual podría complicar el proyecto si es que quieres utilizar el conector de 2,1mm para otra conexión de circuito. Por último, debes tener cuidado en la cantidad de procesos que atribuyas al proyecto. Si bien es cierto que esta placa es muy superior en potencia a la Arduino UNO y dispones de un potente microcontrolador, una buena memoria y un reloj de 48 MHz, siempre debes estar atento a la carga que le transfieras.

Lista de los mejores proyectos que puedes hacer con placas Arduino ZERO

Conoce los mejores proyectos que puedes llevar a cabo con una placa de Arduino ZERO:

Pantalla de NeoPixel controlada por WiFi

Pantalla de NeoPixel controlada por WiFi

Con este proyecto vas a poder crear una pantalla de NeoPixel manejada por WiFi. Vas a necesitar una placa Arduino ZERO, un anillo con luces de tipo NeoPixel, varios leds, un protoboard, un condensador de 1000 µF, una resistencia de 475 ohmios y cables para generar las conexiones. El montaje lo tendrás que hacer siguiendo las descripciones y especificaciones de las piezas y considerando los pines de la placa, de acuerdo con todo lo que hemos hablado en este post.

Cuando tengas listo el ensamblaje deberás ingresar el siguiente código:

#include <Adafruit_NeoPixel.h>

#include <WiFi101.h>

#define PIN 12

#define NUMPIXELS 10

#define interval 50

#define wifiRetryTimes 0

Adafruit_NeoPixel píxeles  =  Adafruit_NeoPixel ( NUMPIXELS ,  PIN ,  NEO_GRB  +  NEO_KHZ800 );

uint32_t rojo  =  píxeles . Color ( 255 ,  0 ,  0 );

uint32_t azul  =  píxeles . Color ( 0 ,  0 ,  255 );

uint32_t verde  =  píxeles . Color ( 0 ,  255 ,  0 );

uint32_t pixelColour ;

uint32_t lastColor ;

float activeColor []  =  { 255 ,  0 ,  0 };

IPAddress apIP ( 192 ,  168 ,  0 ,  150 );

IPAddress netMsk ( 255 ,  255 ,  255 ,  0 );

Dirección IP gw ( 192 ,  168 ,  0 ,  1 );

Dirección IP dns ( 192 ,  168 ,  0 ,  1 );

IP de cadena ;

char APssid []  =  "MKR1000" ;

char APpass []  =  "MKR1000" ;

char ssid []  =  "YourSSID" ;

char pass []  =  "YourPassword" ;

int keyIndex  =  0 ;

int status  =  WL_IDLE_STATUS ;

Servidor WiFiServer ( 80 );

const char  html1 []  PROGMEM  =

"<! DOCTYPE html> <html> <head> <meta http-equiv = 'X-UA-Compatible' content = 'IE = Edge'> <meta charset = 'utf-8'> <title> Neopixel Color Picker < / título> "

"<style type = 'text / css'>. bt {display: block; width: 250px; height: 100px; padding: 10px; margin: 10px; text-align: center; border-radius: 5px; color: white; font-weight: bold; font-size: 40px; text-decoration: none;} body {background: # 000;} "

".red {fondo: rojo; color: blanco;}. verde {fondo: # 0C0; color: blanco;}. azul {fondo: azul; color: blanco;}"

".white {fondo: blanco; color: negro; borde: 1px negro sólido;}. off {fondo: # 666; color: blanco;}. colorPicker {fondo: blanco; color: negro;}. colorWipe {tamaño de fuente : 40px; fondo: degradado lineal (a la derecha, rojo, # 0C0, azul);} "

".theatreChase {font-size: 40px; background: linear-gradient (a la derecha, rojo, negro, rojo, negro, # 0C0, negro, # 0C0, negro, azul, negro, azul);}"

".rainbow {tamaño de fuente: 40px; fondo: rojo; fondo: degradado lineal (a la derecha, rojo, naranja, amarillo, verde, azul, índigo, violeta, rojo, naranja, amarillo, verde, azul, índigo, violeta) );} "

".rainbowCycle {tamaño de fuente: 40px; fondo: rojo; fondo: degradado lineal (a la derecha, rojo, naranja, amarillo, verde, azul, índigo, violeta);}"

".rainbowChase {tamaño de fuente: 40px; fondo: rojo; fondo: degradado lineal (a la derecha, rojo, negro, naranja, negro, amarillo, negro, verde, negro, azul, negro, índigo, negro, violeta); } " ;

const char  html2 []  PROGMEM  =

".breathe {fondo: azul; color: blanco;}. cylon {fondo: rojo; color: negro;}. latido {fondo: rojo; color: blanco;}. NAVIDAD {tamaño de fuente: 40px; fondo: rojo; fondo: degradado lineal (a la derecha, rojo, verde, rojo, verde, rojo, verde, rojo, verde, rojo, verde, rojo, verde);} "

".TODOS {fondo: blanco; color: azul;}. Y {fondo: # EE0; alto: 100px; ancho: 100px; radio del borde: 50px;}. B {fondo: # 000; alto: 100px; ancho: 100px; border-radius: 50px;}. A {font-size: 35px;} td {vertical-align: middle;} "

"td {vertical-align: middle;} </style> </head>"

"<script type = 'text / javascript'>" ;

const char  html3 []  PROGMEM  =

"función ResetWebpage () {if (window.location.href! = 'http: // # IPADDRESS /') {window.open ('http: // # IPADDRESS /', '_ self', true)}};" // cambie el valor del sitio web aquí a su sitio web estático

"función myFunction () {document.getElementById ('brilloLevel'). submit ();} </script>"

"<body onload = 'ResetWebpage ()'> <table> <tr> <td width = '100'> <div class = 'TGT00'> </div> </td> <td> <a class = 'bt red 'href =' / L00? v = 1 '> Rojo </a> </td> <td> <a class='bt colorWipe' href='/L01?v=1'> Color Wipe </a> </td> <td> <div class = 'TGT01'> </div> </td> </tr> "

"<tr> <td> <div class = 'TGT02'> </div> </td> <td> <a class='bt green' href='/L02?v=1'> Verde </a> </td> <td> <a class='bt theatreChase' href='/L03?v=1'> Theatre Chase </a> </td> <td> <div class = 'TGT03'> </ div > </td> </tr> "

"<tr> <td> <div class = 'TGT04'> </div> </td> <td> <a class='bt blue' href='/L04?v=1'> Azul </a> </td> <td> <a class='bt rainbow' href='/L05?v=1'> Rainbow </a> </td> <td> <div class = 'TGT05'> </div> </td> </tr> "

"<tr> <td> <div class = 'TGT06'> </div> </td> <td> <a class='bt white' href='/L06?v=1'> White </a> </td> <td> <a class='bt rainbowChase' href='/L07?v=1'> Rainbow Chase </a> </td> <td> <div class = 'TGT07'> </ div > </td> </tr> " ;

const char  html4 []  PROGMEM  =

"<tr> <td> <div class = 'TGT08'> </div> </td> <td> <a class='bt cylon' href='/L08?v=1'> Cylon Chaser </ a > </td> <td> <a class='bt rainbowCycle' href='/L09?v=1'> Rainbow Cycle </a> </td> <td> <div class = 'TGT09'> </ div> </td> </tr> "

"<tr> <td> <div class = 'TGT10'> </div> </td> <td> <a class='bt breathe' href='/L10?v=1'> Breathe </a> </td> <td> <a class='bt heartbeat' href='/L11?v=1'> Heartbeat </a> </td> <td> <div class = 'TGT11'> </div> </td> </tr> "

"<tr> <td> <div class = 'TGT12'> </div> </td> <td> <a class='bt XMAS' href='/L12?v=1'> Navidad </a> </td> <td> <a class='bt ALL' href='/L13?v=1'> Ciclo TODO </a> </td> <td> <div class = 'TGT13'> </ div > </td> </tr> "

"<tr> <td> <div class = 'TGT14'> </div> </td> <td> <a class='bt off' href='/L14?v=1'> Desactivado </a> </td> <td> <form id = 'shineLevel'> <input type = 'range' name = 'bright' max = '255' min = '0' value = '# BRIGHT' onchange = 'myFunction ()' class = 'bt off'> </form> </td> </tr> "

"</table> </body> </html>" ;

String sendHtml3  =  html3 ;

String sendHtml4  =  html4 ;

String currentLine;

boolean NeoState[] = {false, false, false, false, false, false, false, false, false, false, false, false, false, false, true}; //Active Neopixel Function (off by default)

int neopixMode = 0;

long previousMillis  =  0 ;

long lastAllCycle  =  0 ;

long previousColorMillis  =  0 ;

int i  =  0 ;

int CWColor  =  0 ;

int j ;

int ciclo  =  0 ;

int TCColor  =  0 ;

int l  =  0 ;

int m  =  0 ;

int n  =  2 ;

int respiradero  =  0 ;

latido booleano =  verdadero ;

int beats  =  0 ;

int brillo  =  150 ;

int o  =  0 ;

int q  =  5 ;

uint32_t lastAllColor  =  0 ;

configuración vacía () {

píxeles . comenzar ();

píxeles . setBrightness ( brillo );

writeLEDS ( 0 , 0 ,  0 );

Serial . comenzar ( 9600 );

Serial . println ( ssid );

if ( WiFi . status ()  ==  WL_NO_SHIELD )  {

Serial . println ( F ( "escudo WiFi no presente" ));

while ( verdadero );

}

WiFi . config ( apIP );

//WiFi.config(apIP, dns, gw, netMsk);

while (  status  ! =  WL_CONNECTED )  {

para ( int  x  =  0 ;  x  <=  wifiRetryTimes ;  x ++ )

{

Serial . print ( F ( "Intentando conectarse a la red denominada:" ));

Serial . println ( ssid );

}

Serial . print ( F ( "No se pudo conectar a Wifi" ));

estado =  WiFi . beginAP ( APssid ); // crea un AP - IP es actualmente estático a 192.168.1.1

// estado = WiFi.beginAP (APssid, APpass);

retraso ( 10000 );

romper ;

}

printWifiStatus ();

sendHtml3 . reemplazar ( "#IPADDRESS" , IP );

sendHtml4 . reemplazar ( "#BRIGHT" , "150" );

Serial . println ( F ( "¡¡Servidor USP iniciado !!" ));

servidor . comenzar ();

Serial . println ( F ( "¡¡servidor HTTP iniciado !!" ));

}

bucle vacío () {

Cliente WiFiClient =  servidor . disponible ();

if ( cliente )  {

println(F("new client"));

currentLine = "";

while (client.connected()) {

if (client.available()) {

char c = client.read();

Serial . escribir ( c );

if ( c  ==  '\ n' )  {

cliente . println ( "Tipo de contenido: texto / html" );

cliente . println ();

cliente . imprimir ( F ( html1 ));

cliente . imprimir ( F ( html2 ));

cliente . imprimir ( sendHtml3 );

cliente . imprimir ( sendHtml4 );

cliente . println ();

romper ;

}

else {       // si tiene una nueva línea, vas a tener que borrar currentLine:

if ( currentLine . indexOf ( "Referer" )  <  0 )  { // realiza siempre que Referer no esté en el valor devuelto

if ( currentLine . indexOf ( "/ L00" )  >  0 )  { // si / L00 está presente en la cadena

handle_L00 (); // ejecuta la función

}

if ( currentLine . indexOf ( "/ L01" )  >  0 )  {

handle_L01 ();

}

if ( currentLine . indexOf ( "/ L02" )  >  0 )  {

handle_L02 ();

}

if ( currentLine . indexOf ( "/ L03" )  >  0 )  {

handle_L03 ();

}

if ( currentLine . indexOf ( "/ L04" )  >  0 )  {

handle_L04 ();

}

if ( currentLine . indexOf ( "/ L05" )  >  0 )  {

handle_L05 ();

}

if ( currentLine . indexOf ( "/ L06" )  >  0 )  {

handle_L06 ();

}

if ( currentLine . indexOf ( "/ L07" )  >  0 )  {

handle_L07 ();

}

if ( currentLine . indexOf ( "/ L08" )  >  0 )  {

handle_L08 ();

}

if ( currentLine . indexOf ( "/ L09" )  >  0 )  {

handle_L09 ();

}

if ( currentLine . indexOf ( "/ L10" )  >  0 )  {

handle_L10 ();

}

if ( currentLine . indexOf ( "/ L11" )  >  0 )  {

handle_L11 ();

}

if ( currentLine . indexOf ( "/ L12" )  >  0 )  {

handle_L12 ();

}

if ( currentLine . indexOf ( "/ L13" )  >  0 )  {

handle_L13 ();

}

if ( currentLine . indexOf ( "/ L14" )  >  0 )  {

handle_L14 ();

}

if ( currentLine . indexOf ( "brillante" )  >  0 )  {

handle_bright ();

}

}

currentLine =  "" ;

}

}

else if  ( c  ! =  '\ r' )

currentLine + =  c ;

}

if ( currentLine . endsWith ( "/ generate_204" ))  {

handle_root ();

}

}

}

// cierra la conexión:

cliente . detener ();

Serial . println ( F ( "cliente desconectado" ));

}

NeoPixModes ();

}

Registro de valores de temperatura

Registro de valores de temperatura

Vas a necesitar una placa Arduino MKR Zero, condensador 100 nF, una resistencia de 4.75 k ohmios, un sensor de temperatura y humedad, una placa de inserción, cables y una tarjeta MicroSD. Con este proyecto obra llevar un registro de los valores de temperatura y humedad que registra tu dispositivo.

Tendrás que ensamblar el Arduino con la placa de pruebas, luego el sensor de temperatura y humedad con la placa de pruebas, después de esto tendrás que conectar el pin de alimentación del sensor al pin VCC y por último conectar el pin de datos del sensor con el pin7. Cuando termines deberás llevar el pin de tierra que tiene el sensor de humedad y temperatura al pin GND de la placa de Arduino. A continuación, conectarás el condensador con el GND y la resistencia.

Una vez que termines deberás ingresar estos códigos:

#include <SD.h>

#include <RTCZero.h>

#include <DHT.h>

#define DHTPIN 7

#define DHTTYPE DHT22

DHT dht(DHTPIN, DHTTYPE);

const int chipSelect = SS1;

unsigned long previousTime;

int loadDataCheck;

RTCZero rtc;

const byte seconds = 50;

const byte minutes = 44;

const byte hours = 17;

const byte day = 1;

const byte month = 9;

const byte year = 16;

void setup() {

pinMode(LED_BUILTIN, OUTPUT);

begin(9600);

println("DataLogger Example:");

if (!SD.begin(chipSelect)) {

println("Card failed, or not present");

return;

}

println("card initialized.");

//When power is supplied to the DHT22 sensor,

//don't send any instruction to the sensor

//within one second to pass unstable status

delay(1000);

println("Initializing DHT");

begin();

println("Initializing RTC");

begin();

setTime(hours, minutes, seconds);

setDate(day, month, year);

setAlarmTime(0, 0, 0);

enableAlarm(rtc.MATCH_SS);

attachInterrupt(dataCheck);

loadDataCheck=0;

previousTime=millis();

println("System ready...");

}

void loop() {

unsigned long currentTime=millis();

if ((currentTime-previousTime)>5000)

{

digitalWrite(LED_BUILTIN, HIGH);

delay(100);

digitalWrite(LED_BUILTIN, LOW);

previousTime=millis();

}

if (loadDataCheck) logData();

}

void dataCheck(){

loadDataCheck=1;

}

void logData(void) {

float humidity = dht.readHumidity();

float temperature = dht.readTemperature();

String dataString = "";

dataString += "Temperature: " + String(temperature) + " C" + "\t" + "Humidity: " + String(humidity) + "%\t" + "Time: " + getTime();

File dataFile = SD.open("datalog.txt", FILE_WRITE);

// if the file is available, write to it:

if (dataFile) {

println(dataString);

close();

// print to the Serial port too:

println(dataString);

}

String getTime(void) {

String returnString = "";

if (rtc.getHours() < 10)

returnString += "0" + String(rtc.getHours());

else

returnString += String(rtc.getHours());

returnString += ":";

if (rtc.getMinutes() < 10)

returnString += "0" + String(rtc.getMinutes());

else

returnString += String(rtc.getMinutes());

returnString += ":";

if (rtc.getSeconds() < 10)

returnString += "0" + String(rtc.getSeconds());

else

returnString += String(rtc.getSeconds());

return returnString;

}

Robot Arduino Zero

Robot Arduino Zero

Podrás crear un robot con una placa de Arduino. Para ello vas a necesitar un adaptador de Arduino MKR2UNO, una placa Arduino MotorShield Rev3, motor de corriente continua, cables y una batería de 9V. Cuando tengas estos materiales vas a tener que ensamblarlos pegando el motor y luego haciendo las conexiones que indican las piezas.

A continuación, tendrás que ingresar estos códigos:

#include <SPI.h>

#include <WiFi101.h>

#include <WiFiMDNSResponder.h>

#include "arduino_secrets.h"

char ssid[] = SECRET_SSID;

char pass[] = SECRET_PASS;

int keyIndex = 0;

char mdnsName[] = "WiFiRobot";

int status = WL_IDLE_STATUS;

WiFiServer server(80);

String readString;

const int pinDirA = 12;

const int pinDirB = 0;

const int pinPwmA = 3;

const int pinPwmB = 11;

const int pinBrakeA = 9;

const int pinBrakeB = 8;

const int motorSpeed = 200;

const int stepsDelay = 500;

void setup() {

pinMode(pinDirA, OUTPUT);

pinMode(pinPwmA, OUTPUT);

pinMode(pinBrakeA, OUTPUT);

pinMode(pinDirB, OUTPUT);

pinMode(pinPwmB, OUTPUT);

pinMode(pinBrakeB, OUTPUT);

brake();

begin(9600);

if (WiFi.status() == WL_NO_SHIELD) {

println("WiFi shield not present");

// don't continue:

while (true);

}

while ( status != WL_CONNECTED) {

print("Attempting to connect to SSID: ");

println(ssid);

status = WiFi.begin(ssid, pass);

delay(10000);

}

printWiFiStatus();

begin();

if (!mdnsResponder.begin(mdnsName)) {

println("Failed to start MDNS responder!");

while (1);

}

print("Server listening at http://");

print(mdnsName);

println(".local/");

println();

}

void loop() {

poll();

WiFiClient client = server.available();

if (client) {

println("new client");

boolean currentLineIsBlank = true;

while (client.connected()) {

if (client.available()) {

char c = client.read();

readString += c;

write(c);

if (c == '\n' && currentLineIsBlank) {

// send a standard http response header

println("HTTP/1.1 200 OK");

println("Content-Type: text/html");

println("Connection: close");

//client.println("Refresh: 5");

println();

println("<!DOCTYPE HTML>");

println("<head><title>WiFi Robot</title></head>");

println("<center><hr/><p> Click the Buttons to move the robot <p/><hr/></center>");

println("<center><input type=button value='GO UP' onmousedown=location.href='/?GO_UP'></center><br/>");

println("<center><left><input type=button value='GO LEFT' onmousedown=location.href='/?GO_LEFT'><input type=button value='GO RIGHT' onmousedown=location.href='/?GO_RIGHT'></center><br/>");

println("<center><input type=button value='GO DOWN' onmousedown=location.href='/?GO_DOWN'></right></center><br/><br/>");

println("<hr/>");

println("</body>");

println("</html>");

break;

}

if (c == '\n') {

currentLineIsBlank = true;

}

else if (c != '\r') {

currentLineIsBlank = false;

}

}

}

delay(1);

stop();

if (readString.indexOf("/?GO_UP") > 0) {

println();

println("UP");

println();

goUp();

}

if (readString.indexOf("/?GO_DOWN") > 0) {

println();

println("DOWN");

println();

goDown();

}

if (readString.indexOf("/?GO_LEFT") > 0) {

println();

println("LEFT");

println();

goLeft();

}

if (readString.indexOf("/?GO_RIGHT") > 0) {

println();

println("RIGHT");

println();

goRight();

}

readString = "";

println("client disconnected");

}

}

void printWiFiStatus() {

print("SSID: ");

println(WiFi.SSID());

IPAddress ip = WiFi.localIP();

print("IP Address: ");

println(ip);

long rssi = WiFi.RSSI();

print("signal strength (RSSI):");

print(rssi);

println(" dBm");

}

void goDown(void) {

motorAforward();

motorBforward();

delay(stepsDelay);

brake();

}

void goUp(void) {

motorBbackward();

motorBbackward();

delay(stepsDelay);

brake();

}

void goLeft(void) {

motorAforward();

motorBbackward();

delay(2*stepsDelay);

brake();

}

void goRight(void) {

motorBforward();

motorAbackward();

delay(2*stepsDelay);

brake();

}

void motorAforward(void) {

digitalWrite(pinDirA, HIGH);

digitalWrite(pinBrakeA, LOW);

analogWrite(pinPwmA, motorSpeed);

}

void motorAbackward(void) {

digitalWrite(pinDirA, LOW);

digitalWrite(pinBrakeA, LOW);

analogWrite(pinPwmA, motorSpeed);

}

void motorBforward(void) {

digitalWrite(pinDirB, HIGH);

digitalWrite(pinBrakeB, LOW);

analogWrite(pinPwmB, motorSpeed);

}

void motorBbackward(void) {

digitalWrite(pinDirB, LOW);

digitalWrite(pinBrakeB, LOW);

analogWrite(pinPwmB, motorSpeed);

}

void brake(void) {

digitalWrite(pinBrakeA, HIGH);

digitalWrite(pinBrakeB, HIGH);

}
Ebooks de IPAP
Ebooks IPAP

🔥ÚNETE🔥 A LA NUEVA COMUNIDAD DE IP@P ¡APÚNTATE AQUÍ!

Si te quedaste con alguna duda, déjalas en los comentarios, te contestaremos lo antes posible, además seguro que será de gran ayuda para más miembros de la comunidad. Gracias! 😉

Temas

Félix Albornoz
Autor: Félix Albornoz

Llevo más de 20 años trabajando en el sector tecnológico ayudando a empresas y usuarios a desarrollarse y formarse en este campo. Siempre aprendiendo cosas nuevas.

Publicidad

Relacionadas

Deja un comentario