<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[SpainLabs - Comunidad 3D, Arduino, Raspberry, CNC, y más - Arduino]]></title>
		<link>https://www.spainlabs.com/foros/</link>
		<description><![CDATA[SpainLabs - Comunidad 3D, Arduino, Raspberry, CNC, y más - https://www.spainlabs.com/foros]]></description>
		<pubDate>Fri, 01 May 2026 11:50:50 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[Juego automático]]></title>
			<link>https://www.spainlabs.com/foros/showthread.php?tid=15587</link>
			<pubDate>Mon, 13 Apr 2026 14:52:59 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.spainlabs.com/foros/member.php?action=profile&uid=17094">avi99</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.spainlabs.com/foros/showthread.php?tid=15587</guid>
			<description><![CDATA[Hola!!<br />
<br />
Tengo un proyecto donde necesito meter dentro de una caja cerrada,un eje x,y controlado por arduino y con dos motores Nema17, de los pequeños. Necesito también que no se vean cables por fuera de la caja, con lo que no puedo usar una fuente de alimentación externa.La caja tiene 7,5cm de alto y creo que lo tengo resuelto.Tengo más ideas que conocimiento. A ver si me podéis ayudar.<br />
<br />
Gracias!!<br />
<br />
Avi99]]></description>
			<content:encoded><![CDATA[Hola!!<br />
<br />
Tengo un proyecto donde necesito meter dentro de una caja cerrada,un eje x,y controlado por arduino y con dos motores Nema17, de los pequeños. Necesito también que no se vean cables por fuera de la caja, con lo que no puedo usar una fuente de alimentación externa.La caja tiene 7,5cm de alto y creo que lo tengo resuelto.Tengo más ideas que conocimiento. A ver si me podéis ayudar.<br />
<br />
Gracias!!<br />
<br />
Avi99]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[CNC con marlin]]></title>
			<link>https://www.spainlabs.com/foros/showthread.php?tid=14087</link>
			<pubDate>Sun, 02 Feb 2025 19:45:56 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.spainlabs.com/foros/member.php?action=profile&uid=17770">ezequielal42</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.spainlabs.com/foros/showthread.php?tid=14087</guid>
			<description><![CDATA[Hola decidi transformar la prusa I3 en router cnc. Tengo una placa Arduino 2560 mega ramps 1.4. Uso Marlin. Funciona todo menos los end stop que los configure como normalmente cerrados NC. El tema es que el codigo M119 los reconoce como presionado y no presionado. Pero cuando hago homing probe varias veces y el motor lo presiona y no para en ninguno de los 3 ejes.<br />
La conexion de los end stops es NC a negativo en  la ramps  y COM a señal de la ramps (todo en la parte de end stop)<br />
Configuration H en la parte de end stop:<br />
<br />
const bool X_ENDSTOPS_INVERTING = true;<br />
const bool Y_ENDSTOPS_INVERTING = true;<br />
const bool Z_ENDSTOPS_INVERTING = true;<br />
<br />
<br />
#define X_HOME_DIR -1<br />
#define Y_HOME_DIR -1<br />
#define Z_HOME_DIR -1 <br />
<br />
Uso cnc js de software <br />
No use otros firmware porque no los entendi (preferi usar el de la prusa I3)y a parte ya tengo casi todo listo con este<br />
<br />
Paso los estados de algunos end stops sin presionar y al presionar y el configuration.H<br />
<br />
ESTO SON LOS END STOP los configure como normalmente cerrado<br />
Reporting endstop status<br />
x_min: open<br />
x_max: TRIGGERED<br />
y_min: open<br />
y_max: TRIGGERED<br />
z_min: open<br />
z_max: TRIGGERED<br />
&gt;&gt;&gt; M119<br />
SENDING:M119<br />
Reporting endstop status<br />
x_min: open<br />
x_max: TRIGGERED<br />
y_min: open<br />
y_max: TRIGGERED<br />
z_min: open<br />
z_max: open<br />
<br />
este es mi configuration H de marlin <br />
<br />
#ifndef CONFIGURATION_H<br />
#define CONFIGURATION_H<br />
<br />
#define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__<br />
#define STRING_CONFIG_H_AUTHOR "(CNC, sin extrusor)"<br />
<br />
//====================== Puerto Serie y Baudrate ============================<br />
#define SERIAL_PORT 0<br />
#define BAUDRATE 250000<br />
<br />
//====================== Placa RAMPS 1.3/1.4 en Mega2560 ==================<br />
#ifndef MOTHERBOARD<br />
  #define MOTHERBOARD 34<br />
#endif<br />
<br />
//========================= Tipo de fuente de poder ========================<br />
#define POWER_SUPPLY 1<br />
<br />
//===========================================================================<br />
//==================== Ajustes Térmicos Desactivados ========================<br />
//===========================================================================<br />
#define TEMP_SENSOR_0 0<br />
#define TEMP_SENSOR_1 0<br />
#define TEMP_SENSOR_2 0<br />
#define TEMP_SENSOR_BED 0<br />
<br />
#define HEATER_0_MINTEMP 0<br />
#define HEATER_1_MINTEMP 0<br />
#define HEATER_2_MINTEMP 0<br />
#define BED_MINTEMP 0<br />
<br />
#define HEATER_0_MAXTEMP 999<br />
#define HEATER_1_MAXTEMP 999<br />
#define HEATER_2_MAXTEMP 999<br />
#define BED_MAXTEMP 999<br />
<br />
// Desactivar PIDTEMP<br />
// #define PIDTEMP<br />
#define PID_MAX 256<br />
// #define PIDTEMPBED<br />
#define MAX_BED_POWER 256<br />
<br />
// #define PREVENT_DANGEROUS_EXTRUDE<br />
#define EXTRUDE_MINTEMP 0<br />
#define EXTRUDE_MAXLENGTH 999999<br />
<br />
//==================== Ajustes Mecánicos/Cinemática =========================<br />
//#define COREXY<br />
<br />
#define ENDSTOPPULLUPS<br />
#ifdef ENDSTOPPULLUPS<br />
  #define ENDSTOPPULLUP_XMAX<br />
  #define ENDSTOPPULLUP_YMAX<br />
  #define ENDSTOPPULLUP_ZMAX<br />
  #define ENDSTOPPULLUP_XMIN<br />
  #define ENDSTOPPULLUP_YMIN<br />
  #define ENDSTOPPULLUP_ZMIN<br />
#endif<br />
<br />
const bool X_ENDSTOPS_INVERTING = true;<br />
const bool Y_ENDSTOPS_INVERTING = true;<br />
const bool Z_ENDSTOPS_INVERTING = true;<br />
<br />
// ANTES tenía: #define DISABLE_MAX_ENDSTOPS<br />
// ---&gt; Comentarla o eliminarla para que Marlin sí use Y_MAX_PIN y Z_MAX_PIN<br />
// #define DISABLE_MAX_ENDSTOPS <br />
<br />
// Pines de enable en bajo<br />
#define X_ENABLE_ON 0<br />
#define Y_ENABLE_ON 0<br />
#define Z_ENABLE_ON 0<br />
#define E_ENABLE_ON 0<br />
<br />
// Desactivar ejes si no se usan<br />
#define DISABLE_X false<br />
#define DISABLE_Y false<br />
#define DISABLE_Z false<br />
#define DISABLE_E false<br />
<br />
// Inversión de ejes<br />
#define INVERT_X_DIR false<br />
#define INVERT_Y_DIR false<br />
#define INVERT_Z_DIR false<br />
#define INVERT_E0_DIR true<br />
<br />
// Homing en MIN o MAX<br />
#define X_HOME_DIR  1<br />
#define Y_HOME_DIR  1<br />
#define Z_HOME_DIR -1<br />
<br />
// Ajustes de límites suaves<br />
#define min_software_endstops false<br />
#define max_software_endstops true<br />
<br />
#define X_MAX_POS 205<br />
#define X_MIN_POS 0<br />
#define Y_MAX_POS 205<br />
#define Y_MIN_POS 0<br />
#define Z_MAX_POS 200<br />
#define Z_MIN_POS 0<br />
<br />
#define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS)<br />
#define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS)<br />
#define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS)<br />
<br />
// (Opcional) Homing manual<br />
#define MANUAL_X_HOME_POS 0<br />
#define MANUAL_Y_HOME_POS 0<br />
#define MANUAL_Z_HOME_POS 0<br />
<br />
#define NUM_AXIS 4<br />
<br />
// Velocidad de homing<br />
#define HOMING_FEEDRATE {50*60, 50*60, 4*60, 0}<br />
<br />
//==================== Ajustes de movimiento y aceleraciones =================<br />
#define DEFAULT_AXIS_STEPS_PER_UNIT  {53.33, 80, 2237.76, 97.06}<br />
#define DEFAULT_MAX_FEEDRATE          {200, 200, 5, 45}<br />
#define DEFAULT_MAX_ACCELERATION      {1000,1000,100,10000}<br />
#define DEFAULT_ACCELERATION          400<br />
#define DEFAULT_RETRACT_ACCELERATION  400<br />
#define DEFAULT_XYJERK                10.0<br />
#define DEFAULT_ZJERK                0.4<br />
#define DEFAULT_EJERK                5.0<br />
<br />
//#define EEPROM_SETTINGS<br />
//#define EEPROM_CHITCHAT<br />
<br />
#define G3D_PANEL<br />
#if defined(ULTIPANEL) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL)<br />
  #define ULTIPANEL<br />
  #define NEWPANEL<br />
#endif<br />
<br />
<br />
<br />
Gracias de antemano por cualquier ayuda]]></description>
			<content:encoded><![CDATA[Hola decidi transformar la prusa I3 en router cnc. Tengo una placa Arduino 2560 mega ramps 1.4. Uso Marlin. Funciona todo menos los end stop que los configure como normalmente cerrados NC. El tema es que el codigo M119 los reconoce como presionado y no presionado. Pero cuando hago homing probe varias veces y el motor lo presiona y no para en ninguno de los 3 ejes.<br />
La conexion de los end stops es NC a negativo en  la ramps  y COM a señal de la ramps (todo en la parte de end stop)<br />
Configuration H en la parte de end stop:<br />
<br />
const bool X_ENDSTOPS_INVERTING = true;<br />
const bool Y_ENDSTOPS_INVERTING = true;<br />
const bool Z_ENDSTOPS_INVERTING = true;<br />
<br />
<br />
#define X_HOME_DIR -1<br />
#define Y_HOME_DIR -1<br />
#define Z_HOME_DIR -1 <br />
<br />
Uso cnc js de software <br />
No use otros firmware porque no los entendi (preferi usar el de la prusa I3)y a parte ya tengo casi todo listo con este<br />
<br />
Paso los estados de algunos end stops sin presionar y al presionar y el configuration.H<br />
<br />
ESTO SON LOS END STOP los configure como normalmente cerrado<br />
Reporting endstop status<br />
x_min: open<br />
x_max: TRIGGERED<br />
y_min: open<br />
y_max: TRIGGERED<br />
z_min: open<br />
z_max: TRIGGERED<br />
&gt;&gt;&gt; M119<br />
SENDING:M119<br />
Reporting endstop status<br />
x_min: open<br />
x_max: TRIGGERED<br />
y_min: open<br />
y_max: TRIGGERED<br />
z_min: open<br />
z_max: open<br />
<br />
este es mi configuration H de marlin <br />
<br />
#ifndef CONFIGURATION_H<br />
#define CONFIGURATION_H<br />
<br />
#define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__<br />
#define STRING_CONFIG_H_AUTHOR "(CNC, sin extrusor)"<br />
<br />
//====================== Puerto Serie y Baudrate ============================<br />
#define SERIAL_PORT 0<br />
#define BAUDRATE 250000<br />
<br />
//====================== Placa RAMPS 1.3/1.4 en Mega2560 ==================<br />
#ifndef MOTHERBOARD<br />
  #define MOTHERBOARD 34<br />
#endif<br />
<br />
//========================= Tipo de fuente de poder ========================<br />
#define POWER_SUPPLY 1<br />
<br />
//===========================================================================<br />
//==================== Ajustes Térmicos Desactivados ========================<br />
//===========================================================================<br />
#define TEMP_SENSOR_0 0<br />
#define TEMP_SENSOR_1 0<br />
#define TEMP_SENSOR_2 0<br />
#define TEMP_SENSOR_BED 0<br />
<br />
#define HEATER_0_MINTEMP 0<br />
#define HEATER_1_MINTEMP 0<br />
#define HEATER_2_MINTEMP 0<br />
#define BED_MINTEMP 0<br />
<br />
#define HEATER_0_MAXTEMP 999<br />
#define HEATER_1_MAXTEMP 999<br />
#define HEATER_2_MAXTEMP 999<br />
#define BED_MAXTEMP 999<br />
<br />
// Desactivar PIDTEMP<br />
// #define PIDTEMP<br />
#define PID_MAX 256<br />
// #define PIDTEMPBED<br />
#define MAX_BED_POWER 256<br />
<br />
// #define PREVENT_DANGEROUS_EXTRUDE<br />
#define EXTRUDE_MINTEMP 0<br />
#define EXTRUDE_MAXLENGTH 999999<br />
<br />
//==================== Ajustes Mecánicos/Cinemática =========================<br />
//#define COREXY<br />
<br />
#define ENDSTOPPULLUPS<br />
#ifdef ENDSTOPPULLUPS<br />
  #define ENDSTOPPULLUP_XMAX<br />
  #define ENDSTOPPULLUP_YMAX<br />
  #define ENDSTOPPULLUP_ZMAX<br />
  #define ENDSTOPPULLUP_XMIN<br />
  #define ENDSTOPPULLUP_YMIN<br />
  #define ENDSTOPPULLUP_ZMIN<br />
#endif<br />
<br />
const bool X_ENDSTOPS_INVERTING = true;<br />
const bool Y_ENDSTOPS_INVERTING = true;<br />
const bool Z_ENDSTOPS_INVERTING = true;<br />
<br />
// ANTES tenía: #define DISABLE_MAX_ENDSTOPS<br />
// ---&gt; Comentarla o eliminarla para que Marlin sí use Y_MAX_PIN y Z_MAX_PIN<br />
// #define DISABLE_MAX_ENDSTOPS <br />
<br />
// Pines de enable en bajo<br />
#define X_ENABLE_ON 0<br />
#define Y_ENABLE_ON 0<br />
#define Z_ENABLE_ON 0<br />
#define E_ENABLE_ON 0<br />
<br />
// Desactivar ejes si no se usan<br />
#define DISABLE_X false<br />
#define DISABLE_Y false<br />
#define DISABLE_Z false<br />
#define DISABLE_E false<br />
<br />
// Inversión de ejes<br />
#define INVERT_X_DIR false<br />
#define INVERT_Y_DIR false<br />
#define INVERT_Z_DIR false<br />
#define INVERT_E0_DIR true<br />
<br />
// Homing en MIN o MAX<br />
#define X_HOME_DIR  1<br />
#define Y_HOME_DIR  1<br />
#define Z_HOME_DIR -1<br />
<br />
// Ajustes de límites suaves<br />
#define min_software_endstops false<br />
#define max_software_endstops true<br />
<br />
#define X_MAX_POS 205<br />
#define X_MIN_POS 0<br />
#define Y_MAX_POS 205<br />
#define Y_MIN_POS 0<br />
#define Z_MAX_POS 200<br />
#define Z_MIN_POS 0<br />
<br />
#define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS)<br />
#define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS)<br />
#define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS)<br />
<br />
// (Opcional) Homing manual<br />
#define MANUAL_X_HOME_POS 0<br />
#define MANUAL_Y_HOME_POS 0<br />
#define MANUAL_Z_HOME_POS 0<br />
<br />
#define NUM_AXIS 4<br />
<br />
// Velocidad de homing<br />
#define HOMING_FEEDRATE {50*60, 50*60, 4*60, 0}<br />
<br />
//==================== Ajustes de movimiento y aceleraciones =================<br />
#define DEFAULT_AXIS_STEPS_PER_UNIT  {53.33, 80, 2237.76, 97.06}<br />
#define DEFAULT_MAX_FEEDRATE          {200, 200, 5, 45}<br />
#define DEFAULT_MAX_ACCELERATION      {1000,1000,100,10000}<br />
#define DEFAULT_ACCELERATION          400<br />
#define DEFAULT_RETRACT_ACCELERATION  400<br />
#define DEFAULT_XYJERK                10.0<br />
#define DEFAULT_ZJERK                0.4<br />
#define DEFAULT_EJERK                5.0<br />
<br />
//#define EEPROM_SETTINGS<br />
//#define EEPROM_CHITCHAT<br />
<br />
#define G3D_PANEL<br />
#if defined(ULTIPANEL) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL)<br />
  #define ULTIPANEL<br />
  #define NEWPANEL<br />
#endif<br />
<br />
<br />
<br />
Gracias de antemano por cualquier ayuda]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[novato en  arduino  ayuda]]></title>
			<link>https://www.spainlabs.com/foros/showthread.php?tid=14052</link>
			<pubDate>Thu, 12 Dec 2024 12:22:31 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.spainlabs.com/foros/member.php?action=profile&uid=17656">cambita</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.spainlabs.com/foros/showthread.php?tid=14052</guid>
			<description><![CDATA[buenos  dias o tardes  necesito su ayuda para configurar  un arduino uno  una protoboard  2 sensores  un ultrasonico  y mh series  una rtc  un buzzer  una lcd i2c  para contar personas  mi problema es que suena  el buzzer al iniciar  y el conteo no  funciona  como puedo  revisar el codigo  y principalmente los pines de conexion]]></description>
			<content:encoded><![CDATA[buenos  dias o tardes  necesito su ayuda para configurar  un arduino uno  una protoboard  2 sensores  un ultrasonico  y mh series  una rtc  un buzzer  una lcd i2c  para contar personas  mi problema es que suena  el buzzer al iniciar  y el conteo no  funciona  como puedo  revisar el codigo  y principalmente los pines de conexion]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[cnc controladora xPRO V5 no encuentro lenguaje comunicacion]]></title>
			<link>https://www.spainlabs.com/foros/showthread.php?tid=14017</link>
			<pubDate>Thu, 14 Nov 2024 12:33:20 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.spainlabs.com/foros/member.php?action=profile&uid=17597">toneti</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.spainlabs.com/foros/showthread.php?tid=14017</guid>
			<description><![CDATA[Saludos desde Barcelona. Dispongo de una cnc ULTIMATEBEE con una controladora xPRO V5... sI NO ME EQUIVOCO ES Arduino<br />
<br />
<a href="https://makerhardware.net/wiki/doku.php?id=electronics:xpro_v5_motion_control_system" target="_blank" rel="noopener" class="mycode_url">https://makerhardware.net/wiki/doku.php?...rol_system</a><br />
<br />
hay un lenguaje para configurarla...pero no encuentro ninguna documentación. Alguien tiene idea DONDE buscar la explicación de los comandos ??<br />
por ejemplo...pero no entiendo que hago:<br />
&#36;Homing/Cycle0=Z<br />
&#36;Homing/Cycle1=XY<br />
&#36;Stepper/Pulse=5<br />
&#36;Stepper/IdleTime=255<br />
&#36;Stepper/DirInvert=X<br />
&#36;Stepper/EnableInvert=Off<br />
&#36;Limits/Invert=Off<br />
&#36;Probe/Invert=On<a href="https://ibb.co/BC7YBN1" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.ibb.co/d53HDgh/111.jpg" loading="lazy"  alt="[Imagen: 111.jpg]" class="mycode_img" /></a><br />
&#36;Report/Status=1<br />
&#36;Limits/Hard=On<br />
&#36;Homing/Enable=On<br />
&#36;Homing/DirInvert=XY<br />
&#36;Homing/Feed=100.000<br />
&#36;Homing/Seek=1000.000<br />
&#36;Homing/Pulloff=10.000<br />
&#36;X/StepsPerMm=200.000<br />
&#36;Y/StepsPerMm=200.000<br />
&#36;Z/StepsPerMm=200.000<br />
&#36;A/StepsPerMm=200.000<br />
&#36;X/MaxRate=3000.000<br />
&#36;Y/MaxRate=3000.000<br />
&#36;Z/MaxRate=2500.000<br />
&#36;A/MaxRate=3000.000<br />
&#36;X/Acceleration=100.000<br />
&#36;Y/Acceleration=100.000<br />
&#36;Z/Acceleration=100.000<br />
&#36;A/Acceleration=100.000<br />
&#36;X/MaxTravel=800.00<br />
&#36;Y/MaxTravel=1270.00<br />
&#36;Z/MaxTravel=106.00<br />
&#36;A/MaxTravel=1270.00<br />
&#36;X/Current/Run=1.950<br />
&#36;Y/Current/Run=1.950<br />
&#36;Z/Current/Run=1.950<br />
&#36;A/Current/Run=1.950<br />
&#36;X/Current/Hold=0.250<br />
&#36;Y/Current/Hold=0.250<br />
&#36;Z/Current/Hold=0.250<br />
&#36;A/Current/Hold=0.250<br />
&#36;X/Microsteps=8<br />
&#36;Y/Microsteps=8<br />
&#36;Z/Microsteps=8<br />
&#36;A/Microsteps=8]]></description>
			<content:encoded><![CDATA[Saludos desde Barcelona. Dispongo de una cnc ULTIMATEBEE con una controladora xPRO V5... sI NO ME EQUIVOCO ES Arduino<br />
<br />
<a href="https://makerhardware.net/wiki/doku.php?id=electronics:xpro_v5_motion_control_system" target="_blank" rel="noopener" class="mycode_url">https://makerhardware.net/wiki/doku.php?...rol_system</a><br />
<br />
hay un lenguaje para configurarla...pero no encuentro ninguna documentación. Alguien tiene idea DONDE buscar la explicación de los comandos ??<br />
por ejemplo...pero no entiendo que hago:<br />
&#36;Homing/Cycle0=Z<br />
&#36;Homing/Cycle1=XY<br />
&#36;Stepper/Pulse=5<br />
&#36;Stepper/IdleTime=255<br />
&#36;Stepper/DirInvert=X<br />
&#36;Stepper/EnableInvert=Off<br />
&#36;Limits/Invert=Off<br />
&#36;Probe/Invert=On<a href="https://ibb.co/BC7YBN1" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.ibb.co/d53HDgh/111.jpg" loading="lazy"  alt="[Imagen: 111.jpg]" class="mycode_img" /></a><br />
&#36;Report/Status=1<br />
&#36;Limits/Hard=On<br />
&#36;Homing/Enable=On<br />
&#36;Homing/DirInvert=XY<br />
&#36;Homing/Feed=100.000<br />
&#36;Homing/Seek=1000.000<br />
&#36;Homing/Pulloff=10.000<br />
&#36;X/StepsPerMm=200.000<br />
&#36;Y/StepsPerMm=200.000<br />
&#36;Z/StepsPerMm=200.000<br />
&#36;A/StepsPerMm=200.000<br />
&#36;X/MaxRate=3000.000<br />
&#36;Y/MaxRate=3000.000<br />
&#36;Z/MaxRate=2500.000<br />
&#36;A/MaxRate=3000.000<br />
&#36;X/Acceleration=100.000<br />
&#36;Y/Acceleration=100.000<br />
&#36;Z/Acceleration=100.000<br />
&#36;A/Acceleration=100.000<br />
&#36;X/MaxTravel=800.00<br />
&#36;Y/MaxTravel=1270.00<br />
&#36;Z/MaxTravel=106.00<br />
&#36;A/MaxTravel=1270.00<br />
&#36;X/Current/Run=1.950<br />
&#36;Y/Current/Run=1.950<br />
&#36;Z/Current/Run=1.950<br />
&#36;A/Current/Run=1.950<br />
&#36;X/Current/Hold=0.250<br />
&#36;Y/Current/Hold=0.250<br />
&#36;Z/Current/Hold=0.250<br />
&#36;A/Current/Hold=0.250<br />
&#36;X/Microsteps=8<br />
&#36;Y/Microsteps=8<br />
&#36;Z/Microsteps=8<br />
&#36;A/Microsteps=8]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Conectar arduino a la placa madre de la kingroon  modelo KP5L]]></title>
			<link>https://www.spainlabs.com/foros/showthread.php?tid=13977</link>
			<pubDate>Mon, 23 Sep 2024 01:53:22 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.spainlabs.com/foros/member.php?action=profile&uid=17505">Arsenio</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.spainlabs.com/foros/showthread.php?tid=13977</guid>
			<description><![CDATA[Hola amigos, me pueden orientar para conectar<br />
El programa arduino a la placa madre de la impresora por favor,  el modelo de la tarjeta madre que tiene esta impresora kingroon Kp3  V 1.3 ,mi problema es que actualice el firmware a marlin 2.1.2 y  el eje x quedo invertido al hacer el home, viaja hacia el lado derecho<br />
Hasta chocar, conecte el programa arduino pero al <br />
Revisar los cambios que hice me sale error en arduino sin poder guardar los cambios ...muchas gracias si pue noden ayudarme estaria muy feliz]]></description>
			<content:encoded><![CDATA[Hola amigos, me pueden orientar para conectar<br />
El programa arduino a la placa madre de la impresora por favor,  el modelo de la tarjeta madre que tiene esta impresora kingroon Kp3  V 1.3 ,mi problema es que actualice el firmware a marlin 2.1.2 y  el eje x quedo invertido al hacer el home, viaja hacia el lado derecho<br />
Hasta chocar, conecte el programa arduino pero al <br />
Revisar los cambios que hice me sale error en arduino sin poder guardar los cambios ...muchas gracias si pue noden ayudarme estaria muy feliz]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[problemas PWM, y comunicación I2C]]></title>
			<link>https://www.spainlabs.com/foros/showthread.php?tid=13951</link>
			<pubDate>Thu, 15 Aug 2024 08:30:46 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.spainlabs.com/foros/member.php?action=profile&uid=1838">MANUEL19687</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.spainlabs.com/foros/showthread.php?tid=13951</guid>
			<description><![CDATA[Hola muy buenas, me estoy volviendo loco, tengo un sistema "servo" para mover un sensor de 0º a 180º, con un pequeño motor eléctrico. Lo controlo con un  driver l298n alimentado a 12v, pero lo reduzco a 2v con software desde Arduino con el PWM desde la salida 9, la referencia de posición  me la proporciona un potenciómetro solidario con el eje de salida del sistema, bueno cuando controlo el sistema desde el monitor serial conectado directo al arduino todo va bien, le introduzco 90 y busca la posición de 90º, pero el problema comienza cuando conecto conecto el arduino nano como esclavo al arduino uno que realiza la función de maestro, desde el monitor serial mando al maestro, por ejemplo, el 90 el nano lo recibe, pero el motor no se mueve, no sé si es que hay problemas entre la comunicación I2C y el pwm. la librería que utilizo es la  WireData.h.<br />
<br />
Éste es el master<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>#include &lt;Wire.h&gt;<br />
#include &lt;WireData.h&gt;<br />
<br />
int VALOR_INTERNO_2 = 0;    <br />
int INT_DATO;      <br />
String STRING_DATO;<br />
volatile float DATO_FLOAT_1;<br />
void setup() <br />
{<br />
  Wire.begin();<br />
  Serial.begin(9600);<br />
<br />
}<br />
<br />
void loop() <br />
{<br />
<br />
//------------------------------------------------------------<br />
  while  (Serial.available() &gt; 0) <br />
  {<br />
  //************RECEPCIÓN_DATOS_MONITOR_SERIAL********  <br />
    STRING_DATO =Serial.readStringUntil('&#92;n');<br />
    Serial.println(STRING_DATO );//MMMMMMMMMMMMMMMMMMMMMMMMMM<br />
    <br />
    delay(10);  <br />
  }<br />
<br />
  //****************** _TRANSFORMAR_VARIABLES_ **************** <br />
INT_DATO = String(STRING_DATO).toInt();//transforma un String en int.<br />
DATO_FLOAT_1 = atof(STRING_DATO.c_str());//transforma un String en float.<br />
//-----------------------------------------------------------<br />
Wire.beginTransmission(1);<br />
  wireWriteData(DATO_FLOAT_1);<br />
  Wire.endTransmission();<br />
  delay(30);<br />
//Serial.println(DATO_FLOAT_1 );//MMMMMMMMMMMMMMMMMMMMMMMMMM<br />
//------------------------------------------------------------<br />
}</code></div></div><br />
y este es el esclavo<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>#include &lt;WireData.h&gt;<br />
//#include &lt;Wire.h&gt;<br />
<br />
<br />
const int ENTRADA_ANALOGICA = A0;  <br />
int VALOR_SENSOR = 0;        <br />
int VALOR_INTERNO = 0;<br />
int VALOR_INTERNO_2 = 0;    <br />
  String STRING_DATO;<br />
volatile float DATO_RECIBIDO_FLOAT =0.00;<br />
volatile int INT_DATO= 0;<br />
int IN3 = 7;<br />
int IN4 = 8;<br />
int PWM = 9;<br />
int POWER= 0;<br />
void setup() <br />
{<br />
  // initialize serial communications at 9600 bps:<br />
  Serial.begin(9600);<br />
  Wire.begin(1); //Empezamos la comunicación I2C con dirección 4 (dispositivo slave)<br />
  Wire.onReceive(RECIBO_DATO_DEL_MAESTRO); //<br />
  pinMode(IN3,OUTPUT);<br />
  pinMode(IN4,OUTPUT);<br />
  pinMode(PWM,OUTPUT);<br />
}<br />
<br />
void loop() <br />
{<br />
/* <br />
  while  (Serial.available() &gt; 0) <br />
  {<br />
  //************RECEPCIÓN_DATOS_MONITOR_SERIAL********  <br />
    STRING_DATO =Serial.readStringUntil('&#92;n');<br />
    Serial.println(STRING_DATO );//MMMMMMMMMMMMMMMMMMMMMMMMMM<br />
    POWER= 22;<br />
    delay(10);  <br />
  }<br />
  //****************** _TRANSFORMAR_VARIABLES_ **************** <br />
  INT_DATO = String(STRING_DATO).toInt();//transforma un String en int.<br />
//FLOAT_DATO = atof(STRING_DATO.c_str());//transforma un String en float.<br />
//-----------------------------------------------------------<br />
*/<br />
  VALOR_SENSOR = analogRead(ENTRADA_ANALOGICA);<br />
  VALOR_INTERNO = map(VALOR_SENSOR, 0, 1023, 0, 255);//VALOR_INTERNO_2  <br />
  VALOR_INTERNO_2 = map(VALOR_INTERNO, 0, 230, 0, 180);//VALOR_INTERNO_2    <br />
  delay(1);<br />
<br />
<br />
  Serial.print("&#92;tVALOR_INTERNO_2= ");//MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM<br />
  Serial.print(VALOR_INTERNO_2);//MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM<br />
  <br />
  Serial.print("&#92;tVALOR_INTERNO= ");//MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM<br />
  Serial.print(VALOR_INTERNO);//MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM<br />
<br />
Serial.print("&#92;tINT_DATO= ");<br />
Serial.println(INT_DATO);//MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM<br />
<br />
//------------------------------------------------------------------------<br />
<br />
INT_DATO = (int)DATO_RECIBIDO_FLOAT;<br />
//-------------------------------------------------------------------------------<br />
if (INT_DATO &lt; VALOR_INTERNO_2 &amp;&amp; VALOR_INTERNO &gt; 6 &amp;&amp; INT_DATO !=0 &amp;&amp; POWER ==22 )//A BAJO<br />
{<br />
  Serial.print("&#92;tVALOR_INTERNO_2= ");//MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM<br />
  Serial.print(VALOR_INTERNO_2);//MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM<br />
  <br />
  Serial.print("&#92;tVALOR_INTERNO= ");//MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM<br />
  Serial.print(VALOR_INTERNO);//MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM<br />
<br />
  Serial.print("&#92;tINT_DATO= ");<br />
Serial.println(INT_DATO);//MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM<br />
  <br />
  VALOR_SENSOR = analogRead(ENTRADA_ANALOGICA);<br />
  VALOR_INTERNO = map(VALOR_SENSOR, 0, 1023, 0, 255);//<br />
  VALOR_INTERNO_2 = map(VALOR_INTERNO, 0, 230, 0, 180);//VALOR_INTERNO_2  <br />
  //Serial.println("VALOR_INTERNO");//MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM<br />
  digitalWrite(IN3,HIGH);//  LOW<br />
  digitalWrite(IN4,LOW);//  HIGH<br />
  analogWrite(PWM,POWER);<br />
}<br />
if(INT_DATO == VALOR_INTERNO_2)<br />
{<br />
  VALOR_SENSOR = analogRead(ENTRADA_ANALOGICA);<br />
  VALOR_INTERNO = map(VALOR_SENSOR, 0, 1023, 0, 255);//0, 1023, 0, 255<br />
  VALOR_INTERNO_2 = map(VALOR_INTERNO, 0, 230, 0, 180);//VALOR_INTERNO_2  <br />
  digitalWrite(IN3,HIGH);//  LOW<br />
  digitalWrite(IN4,HIGH);//  HIGH<br />
  analogWrite(PWM,100);<br />
  POWER =0;<br />
  IGUALDAD();<br />
}<br />
//------------------------------------------------------------------------------- <br />
<br />
<br />
//--------------------------------------------------------------------------------<br />
if (INT_DATO &gt; VALOR_INTERNO_2 &amp;&amp; VALOR_INTERNO &lt; 234 &amp;&amp; INT_DATO !=0 &amp;&amp; POWER ==22)// A ARRIBA<br />
{<br />
  VALOR_SENSOR = analogRead(ENTRADA_ANALOGICA);<br />
  VALOR_INTERNO = map(VALOR_SENSOR, 0, 1023, 0, 255);//<br />
  VALOR_INTERNO_2 = map(VALOR_INTERNO, 0, 230, 0, 180);//VALOR_INTERNO_2  <br />
  //Serial.println("VALOR_INTERNO");//MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM<br />
  digitalWrite(IN3,LOW);//  LOW<br />
  digitalWrite(IN4,HIGH);//  HIGH<br />
  analogWrite(PWM,POWER);<br />
}<br />
if (INT_DATO == VALOR_INTERNO_2)<br />
{<br />
  VALOR_SENSOR = analogRead(ENTRADA_ANALOGICA);<br />
  VALOR_INTERNO = map(VALOR_SENSOR, 0, 1023, 0, 255);//<br />
  VALOR_INTERNO_2 = map(VALOR_INTERNO, 0, 230, 0, 180);//1, 223, 0, 180)<br />
  digitalWrite(IN3,HIGH);//  LOW<br />
  digitalWrite(IN4,HIGH);//  HIGH<br />
  analogWrite(PWM,100);<br />
  POWER =0;<br />
  //delay(1000);<br />
  IGUALDAD();<br />
}<br />
//---------------------------------------------------------------------------------<br />
}<br />
<br />
//************************_COMUNICACION_I2C_ ************************<br />
void RECIBO_DATO_DEL_MAESTRO(int byteCount)<br />
{<br />
wireReadData(DATO_RECIBIDO_FLOAT);<br />
delay(5);<br />
//INT_DATO = (int)DATO_RECIBIDO_FLOAT;<br />
}<br />
//--------------------------------------------------------------------<br />
<br />
void  IGUALDAD()<br />
{<br />
  <br />
  VALOR_SENSOR = analogRead(ENTRADA_ANALOGICA);<br />
  VALOR_INTERNO = map(VALOR_SENSOR, 0, 1023, 0, 255);//<br />
  VALOR_INTERNO_2 = map(VALOR_INTERNO, 0, 230, 0, 180);//VALOR_INTERNO_2  <br />
  POWER =0;<br />
  digitalWrite(IN3,HIGH);//  LOW<br />
  digitalWrite(IN4,HIGH);//  HIGH<br />
  POWER =0;<br />
  //delay(20);<br />
  <br />
  loop();<br />
}</code></div></div>]]></description>
			<content:encoded><![CDATA[Hola muy buenas, me estoy volviendo loco, tengo un sistema "servo" para mover un sensor de 0º a 180º, con un pequeño motor eléctrico. Lo controlo con un  driver l298n alimentado a 12v, pero lo reduzco a 2v con software desde Arduino con el PWM desde la salida 9, la referencia de posición  me la proporciona un potenciómetro solidario con el eje de salida del sistema, bueno cuando controlo el sistema desde el monitor serial conectado directo al arduino todo va bien, le introduzco 90 y busca la posición de 90º, pero el problema comienza cuando conecto conecto el arduino nano como esclavo al arduino uno que realiza la función de maestro, desde el monitor serial mando al maestro, por ejemplo, el 90 el nano lo recibe, pero el motor no se mueve, no sé si es que hay problemas entre la comunicación I2C y el pwm. la librería que utilizo es la  WireData.h.<br />
<br />
Éste es el master<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>#include &lt;Wire.h&gt;<br />
#include &lt;WireData.h&gt;<br />
<br />
int VALOR_INTERNO_2 = 0;    <br />
int INT_DATO;      <br />
String STRING_DATO;<br />
volatile float DATO_FLOAT_1;<br />
void setup() <br />
{<br />
  Wire.begin();<br />
  Serial.begin(9600);<br />
<br />
}<br />
<br />
void loop() <br />
{<br />
<br />
//------------------------------------------------------------<br />
  while  (Serial.available() &gt; 0) <br />
  {<br />
  //************RECEPCIÓN_DATOS_MONITOR_SERIAL********  <br />
    STRING_DATO =Serial.readStringUntil('&#92;n');<br />
    Serial.println(STRING_DATO );//MMMMMMMMMMMMMMMMMMMMMMMMMM<br />
    <br />
    delay(10);  <br />
  }<br />
<br />
  //****************** _TRANSFORMAR_VARIABLES_ **************** <br />
INT_DATO = String(STRING_DATO).toInt();//transforma un String en int.<br />
DATO_FLOAT_1 = atof(STRING_DATO.c_str());//transforma un String en float.<br />
//-----------------------------------------------------------<br />
Wire.beginTransmission(1);<br />
  wireWriteData(DATO_FLOAT_1);<br />
  Wire.endTransmission();<br />
  delay(30);<br />
//Serial.println(DATO_FLOAT_1 );//MMMMMMMMMMMMMMMMMMMMMMMMMM<br />
//------------------------------------------------------------<br />
}</code></div></div><br />
y este es el esclavo<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>#include &lt;WireData.h&gt;<br />
//#include &lt;Wire.h&gt;<br />
<br />
<br />
const int ENTRADA_ANALOGICA = A0;  <br />
int VALOR_SENSOR = 0;        <br />
int VALOR_INTERNO = 0;<br />
int VALOR_INTERNO_2 = 0;    <br />
  String STRING_DATO;<br />
volatile float DATO_RECIBIDO_FLOAT =0.00;<br />
volatile int INT_DATO= 0;<br />
int IN3 = 7;<br />
int IN4 = 8;<br />
int PWM = 9;<br />
int POWER= 0;<br />
void setup() <br />
{<br />
  // initialize serial communications at 9600 bps:<br />
  Serial.begin(9600);<br />
  Wire.begin(1); //Empezamos la comunicación I2C con dirección 4 (dispositivo slave)<br />
  Wire.onReceive(RECIBO_DATO_DEL_MAESTRO); //<br />
  pinMode(IN3,OUTPUT);<br />
  pinMode(IN4,OUTPUT);<br />
  pinMode(PWM,OUTPUT);<br />
}<br />
<br />
void loop() <br />
{<br />
/* <br />
  while  (Serial.available() &gt; 0) <br />
  {<br />
  //************RECEPCIÓN_DATOS_MONITOR_SERIAL********  <br />
    STRING_DATO =Serial.readStringUntil('&#92;n');<br />
    Serial.println(STRING_DATO );//MMMMMMMMMMMMMMMMMMMMMMMMMM<br />
    POWER= 22;<br />
    delay(10);  <br />
  }<br />
  //****************** _TRANSFORMAR_VARIABLES_ **************** <br />
  INT_DATO = String(STRING_DATO).toInt();//transforma un String en int.<br />
//FLOAT_DATO = atof(STRING_DATO.c_str());//transforma un String en float.<br />
//-----------------------------------------------------------<br />
*/<br />
  VALOR_SENSOR = analogRead(ENTRADA_ANALOGICA);<br />
  VALOR_INTERNO = map(VALOR_SENSOR, 0, 1023, 0, 255);//VALOR_INTERNO_2  <br />
  VALOR_INTERNO_2 = map(VALOR_INTERNO, 0, 230, 0, 180);//VALOR_INTERNO_2    <br />
  delay(1);<br />
<br />
<br />
  Serial.print("&#92;tVALOR_INTERNO_2= ");//MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM<br />
  Serial.print(VALOR_INTERNO_2);//MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM<br />
  <br />
  Serial.print("&#92;tVALOR_INTERNO= ");//MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM<br />
  Serial.print(VALOR_INTERNO);//MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM<br />
<br />
Serial.print("&#92;tINT_DATO= ");<br />
Serial.println(INT_DATO);//MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM<br />
<br />
//------------------------------------------------------------------------<br />
<br />
INT_DATO = (int)DATO_RECIBIDO_FLOAT;<br />
//-------------------------------------------------------------------------------<br />
if (INT_DATO &lt; VALOR_INTERNO_2 &amp;&amp; VALOR_INTERNO &gt; 6 &amp;&amp; INT_DATO !=0 &amp;&amp; POWER ==22 )//A BAJO<br />
{<br />
  Serial.print("&#92;tVALOR_INTERNO_2= ");//MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM<br />
  Serial.print(VALOR_INTERNO_2);//MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM<br />
  <br />
  Serial.print("&#92;tVALOR_INTERNO= ");//MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM<br />
  Serial.print(VALOR_INTERNO);//MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM<br />
<br />
  Serial.print("&#92;tINT_DATO= ");<br />
Serial.println(INT_DATO);//MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM<br />
  <br />
  VALOR_SENSOR = analogRead(ENTRADA_ANALOGICA);<br />
  VALOR_INTERNO = map(VALOR_SENSOR, 0, 1023, 0, 255);//<br />
  VALOR_INTERNO_2 = map(VALOR_INTERNO, 0, 230, 0, 180);//VALOR_INTERNO_2  <br />
  //Serial.println("VALOR_INTERNO");//MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM<br />
  digitalWrite(IN3,HIGH);//  LOW<br />
  digitalWrite(IN4,LOW);//  HIGH<br />
  analogWrite(PWM,POWER);<br />
}<br />
if(INT_DATO == VALOR_INTERNO_2)<br />
{<br />
  VALOR_SENSOR = analogRead(ENTRADA_ANALOGICA);<br />
  VALOR_INTERNO = map(VALOR_SENSOR, 0, 1023, 0, 255);//0, 1023, 0, 255<br />
  VALOR_INTERNO_2 = map(VALOR_INTERNO, 0, 230, 0, 180);//VALOR_INTERNO_2  <br />
  digitalWrite(IN3,HIGH);//  LOW<br />
  digitalWrite(IN4,HIGH);//  HIGH<br />
  analogWrite(PWM,100);<br />
  POWER =0;<br />
  IGUALDAD();<br />
}<br />
//------------------------------------------------------------------------------- <br />
<br />
<br />
//--------------------------------------------------------------------------------<br />
if (INT_DATO &gt; VALOR_INTERNO_2 &amp;&amp; VALOR_INTERNO &lt; 234 &amp;&amp; INT_DATO !=0 &amp;&amp; POWER ==22)// A ARRIBA<br />
{<br />
  VALOR_SENSOR = analogRead(ENTRADA_ANALOGICA);<br />
  VALOR_INTERNO = map(VALOR_SENSOR, 0, 1023, 0, 255);//<br />
  VALOR_INTERNO_2 = map(VALOR_INTERNO, 0, 230, 0, 180);//VALOR_INTERNO_2  <br />
  //Serial.println("VALOR_INTERNO");//MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM<br />
  digitalWrite(IN3,LOW);//  LOW<br />
  digitalWrite(IN4,HIGH);//  HIGH<br />
  analogWrite(PWM,POWER);<br />
}<br />
if (INT_DATO == VALOR_INTERNO_2)<br />
{<br />
  VALOR_SENSOR = analogRead(ENTRADA_ANALOGICA);<br />
  VALOR_INTERNO = map(VALOR_SENSOR, 0, 1023, 0, 255);//<br />
  VALOR_INTERNO_2 = map(VALOR_INTERNO, 0, 230, 0, 180);//1, 223, 0, 180)<br />
  digitalWrite(IN3,HIGH);//  LOW<br />
  digitalWrite(IN4,HIGH);//  HIGH<br />
  analogWrite(PWM,100);<br />
  POWER =0;<br />
  //delay(1000);<br />
  IGUALDAD();<br />
}<br />
//---------------------------------------------------------------------------------<br />
}<br />
<br />
//************************_COMUNICACION_I2C_ ************************<br />
void RECIBO_DATO_DEL_MAESTRO(int byteCount)<br />
{<br />
wireReadData(DATO_RECIBIDO_FLOAT);<br />
delay(5);<br />
//INT_DATO = (int)DATO_RECIBIDO_FLOAT;<br />
}<br />
//--------------------------------------------------------------------<br />
<br />
void  IGUALDAD()<br />
{<br />
  <br />
  VALOR_SENSOR = analogRead(ENTRADA_ANALOGICA);<br />
  VALOR_INTERNO = map(VALOR_SENSOR, 0, 1023, 0, 255);//<br />
  VALOR_INTERNO_2 = map(VALOR_INTERNO, 0, 230, 0, 180);//VALOR_INTERNO_2  <br />
  POWER =0;<br />
  digitalWrite(IN3,HIGH);//  LOW<br />
  digitalWrite(IN4,HIGH);//  HIGH<br />
  POWER =0;<br />
  //delay(20);<br />
  <br />
  loop();<br />
}</code></div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[error: exit status 1]]></title>
			<link>https://www.spainlabs.com/foros/showthread.php?tid=13943</link>
			<pubDate>Wed, 07 Aug 2024 02:16:50 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.spainlabs.com/foros/member.php?action=profile&uid=17427">OwenDlx</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.spainlabs.com/foros/showthread.php?tid=13943</guid>
			<description><![CDATA[Buenas tardes, quisiera saber si alguien puede ayudarme a solucionar un error en un codigo, permitanme darles contexto, hace un par de semanas compre un robot para armar por mercado libre (<span style="font-weight: bold;" class="mycode_b">Kit de coche robot inteligente 4wd compatible con arduino uno R3</span>), esto para un concurso de robots (amigable), al parecer todo esta bien pero cuando quiero cargar el codigo en la placa de arduino UNO me marca un error el cual es el siguiente.<br />
     avrdude: stk500_recv(): programmer is not responding<br />
     avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x9c<br />
     avrdude: stk500_recv(): programmer is not responding<br />
     avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x9c<br />
     avrdude: stk500_recv(): programmer is not responding<br />
     avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x9c<br />
     avrdude: stk500_recv(): programmer is not responding<br />
     avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x9c<br />
     avrdude: stk500_recv(): programmer is not responding<br />
     avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x9c<br />
     avrdude: stk500_recv(): programmer is not responding<br />
     avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x9c<br />
     avrdude: stk500_recv(): programmer is not responding<br />
     avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x9c<br />
     avrdude: stk500_recv(): programmer is not responding<br />
     avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x9c<br />
     avrdude: stk500_recv(): programmer is not responding<br />
     avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x9c<br />
     avrdude: stk500_recv(): programmer is not responding<br />
     avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x9c<br />
     Failed uploading: uploading error: exit status 1<br />
<br />
cabe decir que el codigo viene incluido en el kit del robot el cual es el siguiente.<br />
<span style="color: #4e5b61;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font"><br />
<span style="color: #728e00;" class="mycode_color">#include</span> <span style="color: #005c5f;" class="mycode_color">&lt;Wire.h&gt;</span>              <span style="color: #95a5a6;" class="mycode_color">//including libraries of I2C</span><br />
<span style="color: #728e00;" class="mycode_color">#include</span> <span style="color: #005c5f;" class="mycode_color">&lt;IRremote.h&gt;</span>          <span style="color: #95a5a6;" class="mycode_color">//including libraries of remote control</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">RECV_PIN</span>  <span style="color: #005c5f;" class="mycode_color">12</span><span style="color: #95a5a6;" class="mycode_color">        //pin 12 of IR remoter control receiver</span><br />
<span style="color: #728e00;" class="mycode_color">#include</span> <span style="color: #005c5f;" class="mycode_color">&lt;Servo.h&gt;</span><br />
IRrecv <span style="color: #d35400;" class="mycode_color">irrecv</span><span style="color: #434f54;" class="mycode_color">(</span>RECV_PIN<span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">      //defining pin 12 of IR remoter control</span><br />
Servo myservo;<br />
decode_results res;<br />
decode_results results;<span style="color: #95a5a6;" class="mycode_color">         //cache of decode of IR remoter control</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">IR_Go</span>       0x<span style="color: #005c5f;" class="mycode_color">00FF18E7</span><span style="color: #95a5a6;" class="mycode_color"> //going forward</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">IR_Back</span>     0x<span style="color: #005c5f;" class="mycode_color">00FF4AB5</span><span style="color: #95a5a6;" class="mycode_color">  //going backward</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">IR_Left</span>     0x<span style="color: #005c5f;" class="mycode_color">00FF10EF</span><span style="color: #95a5a6;" class="mycode_color">//turning left</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">IR_Right</span>    0x<span style="color: #005c5f;" class="mycode_color">00FF5AA5</span><span style="color: #95a5a6;" class="mycode_color">  //turning right</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">IR_Stop</span>     0x<span style="color: #005c5f;" class="mycode_color">00FF38C7</span><span style="color: #95a5a6;" class="mycode_color">  //stop </span><br />
<span style="color: #95a5a6;" class="mycode_color">//////////////////////////////////////////////////</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">SensorLeft</span>    <span style="color: #005c5f;" class="mycode_color">9</span><span style="color: #95a5a6;" class="mycode_color">   //sensor left pin of line tracking module </span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">SensorMiddle</span>  <span style="color: #005c5f;" class="mycode_color">10</span><span style="color: #95a5a6;" class="mycode_color">   //sensor middle pin of line tracking module</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">SensorRight</span>   <span style="color: #005c5f;" class="mycode_color">11</span><span style="color: #95a5a6;" class="mycode_color">  //sensor right pin of line tracking module</span><br />
<span style="color: #00979d;" class="mycode_color">unsigned</span> <span style="color: #00979d;" class="mycode_color">char</span> SL;<span style="color: #95a5a6;" class="mycode_color">        //state of left sensor of line tracking module</span><br />
<span style="color: #00979d;" class="mycode_color">unsigned</span> <span style="color: #00979d;" class="mycode_color">char</span> SM;<span style="color: #95a5a6;" class="mycode_color">        //state of middle sensor of line tracking module</span><br />
<span style="color: #00979d;" class="mycode_color">unsigned</span> <span style="color: #00979d;" class="mycode_color">char</span> SR;<span style="color: #95a5a6;" class="mycode_color">        //state of right sensor of line tracking module</span><br />
<span style="color: #00979d;" class="mycode_color">volatile</span> <span style="color: #00979d;" class="mycode_color">int</span> DL;<br />
<span style="color: #00979d;" class="mycode_color">volatile</span> <span style="color: #00979d;" class="mycode_color">int</span> DM;<br />
<span style="color: #00979d;" class="mycode_color">volatile</span> <span style="color: #00979d;" class="mycode_color">int</span> DR;<br />
<span style="color: #00979d;" class="mycode_color">int</span> inputPin=A0;<span style="color: #95a5a6;" class="mycode_color">  // ultrasonic module   ECHO to A0</span><br />
<span style="color: #00979d;" class="mycode_color">int</span> outputPin=A1;<span style="color: #95a5a6;" class="mycode_color">  // ultrasonic module  TRIG to A1</span><br />
<span style="color: #00979d;" class="mycode_color">unsigned</span> <span style="color: #00979d;" class="mycode_color">char</span> bluetooth_data;       <br />
<span style="color: #00979d;" class="mycode_color">unsigned</span> <span style="color: #00979d;" class="mycode_color">long</span> Key;<br />
<span style="color: #00979d;" class="mycode_color">unsigned</span> <span style="color: #00979d;" class="mycode_color">long</span> Key1;<br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">Lpwm_pin</span>  <span style="color: #005c5f;" class="mycode_color">5</span><span style="color: #95a5a6;" class="mycode_color">     //pin of controlling speed---- ENA of motor driver board</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">Rpwm_pin</span>  <span style="color: #005c5f;" class="mycode_color">6</span><span style="color: #95a5a6;" class="mycode_color">    //pin of controlling speed---- ENB of motor driver board</span><br />
<span style="color: #00979d;" class="mycode_color">int</span> pinLB=<span style="color: #005c5f;" class="mycode_color">2</span>;<span style="color: #95a5a6;" class="mycode_color">             //pin of controlling turning---- IN1 of motor driver board</span><br />
<span style="color: #00979d;" class="mycode_color">int</span> pinLF=<span style="color: #005c5f;" class="mycode_color">4</span>;<span style="color: #95a5a6;" class="mycode_color">             //pin of controlling turning---- IN2 of motor driver board</span><br />
<span style="color: #00979d;" class="mycode_color">int</span> pinRB=<span style="color: #005c5f;" class="mycode_color">7</span>;<span style="color: #95a5a6;" class="mycode_color">            //pin of controlling turning---- IN3 of motor driver board</span><br />
<span style="color: #00979d;" class="mycode_color">int</span> pinRF=<span style="color: #005c5f;" class="mycode_color">8</span>;<span style="color: #95a5a6;" class="mycode_color">            //pin of controlling turning---- IN4 of motor driver board</span><br />
<span style="color: #00979d;" class="mycode_color">int</span> flag=<span style="color: #005c5f;" class="mycode_color">0</span>;<br />
<span style="color: #00979d;" class="mycode_color">int</span> Car_state=<span style="color: #005c5f;" class="mycode_color">0</span>;<span style="color: #95a5a6;" class="mycode_color">             //the working state of car</span><br />
<span style="color: #00979d;" class="mycode_color">int</span> myangle;<span style="color: #95a5a6;" class="mycode_color">                //defining variable of angle</span><br />
<span style="color: #00979d;" class="mycode_color">int</span> pulsewidth;<span style="color: #95a5a6;" class="mycode_color">              //defining variable of pulse width</span><br />
<span style="color: #00979d;" class="mycode_color">unsigned</span> <span style="color: #00979d;" class="mycode_color">char</span> DuoJiao=<span style="color: #005c5f;" class="mycode_color">90</span>;<span style="color: #95a5a6;" class="mycode_color">    //initialized angle of motor at 90°</span><br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">Sensor_IO_Config</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #95a5a6;" class="mycode_color">     //IO initialized function of three line tracking , all setting at input</span><br />
<span style="color: #434f54;" class="mycode_color">{</span><br />
  <span style="color: #d35400;" class="mycode_color">pinMode</span><span style="color: #434f54;" class="mycode_color">(</span>SensorLeft,INPUT<span style="color: #434f54;" class="mycode_color">)</span>;<br />
  <span style="color: #d35400;" class="mycode_color">pinMode</span><span style="color: #434f54;" class="mycode_color">(</span>SensorMiddle,INPUT<span style="color: #434f54;" class="mycode_color">)</span>;<br />
  <span style="color: #d35400;" class="mycode_color">pinMode</span><span style="color: #434f54;" class="mycode_color">(</span>SensorRight,INPUT<span style="color: #434f54;" class="mycode_color">)</span>;<br />
  <span style="color: #d35400;" class="mycode_color">pinMode</span><span style="color: #434f54;" class="mycode_color">(</span>inputPin, INPUT<span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">      //starting receiving IR remote control signal</span><br />
  <span style="color: #d35400;" class="mycode_color">pinMode</span><span style="color: #434f54;" class="mycode_color">(</span>outputPin, OUTPUT<span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">    //IO of ultrasonic module</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">Sensor_Scan</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #00979d;" class="mycode_color">void</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #95a5a6;" class="mycode_color"> //function of reading-in signal of line tracking module </span><br />
<span style="color: #434f54;" class="mycode_color">{</span><br />
  SL = <span style="color: #d35400;" class="mycode_color">digitalRead</span><span style="color: #434f54;" class="mycode_color">(</span>SensorLeft<span style="color: #434f54;" class="mycode_color">)</span>;<br />
  SM = <span style="color: #d35400;" class="mycode_color">digitalRead</span><span style="color: #434f54;" class="mycode_color">(</span>SensorMiddle<span style="color: #434f54;" class="mycode_color">)</span>;<br />
  SR = <span style="color: #d35400;" class="mycode_color">digitalRead</span><span style="color: #434f54;" class="mycode_color">(</span>SensorRight<span style="color: #434f54;" class="mycode_color">)</span>;<br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">M_Control_IO_config</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #00979d;" class="mycode_color">void</span><span style="color: #434f54;" class="mycode_color">)</span><br />
<span style="color: #434f54;" class="mycode_color">{</span><br />
  <span style="color: #d35400;" class="mycode_color">pinMode</span><span style="color: #434f54;" class="mycode_color">(</span>pinLB,OUTPUT<span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color"> // /pin 2</span><br />
  <span style="color: #d35400;" class="mycode_color">pinMode</span><span style="color: #434f54;" class="mycode_color">(</span>pinLF,OUTPUT<span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color"> // pin 4</span><br />
  <span style="color: #d35400;" class="mycode_color">pinMode</span><span style="color: #434f54;" class="mycode_color">(</span>pinRB,OUTPUT<span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color"> // pin 7</span><br />
  <span style="color: #d35400;" class="mycode_color">pinMode</span><span style="color: #434f54;" class="mycode_color">(</span>pinRF,OUTPUT<span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">  // pin 8</span><br />
  <span style="color: #d35400;" class="mycode_color">pinMode</span><span style="color: #434f54;" class="mycode_color">(</span>Lpwm_pin,OUTPUT<span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">  // pin 5 (PWM) </span><br />
  <span style="color: #d35400;" class="mycode_color">pinMode</span><span style="color: #434f54;" class="mycode_color">(</span>Rpwm_pin,OUTPUT<span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">  // pin6(PWM)   </span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #00979d;" class="mycode_color">unsigned</span> <span style="color: #00979d;" class="mycode_color">char</span> <span style="color: #434f54;" class="mycode_color">pwm)</span><span style="color: #95a5a6;" class="mycode_color"> //function of setting speed</span><br />
<span style="color: #434f54;" class="mycode_color">{</span><br />
  <span style="color: #d35400;" class="mycode_color">analogWrite</span><span style="color: #434f54;" class="mycode_color">(</span>Lpwm_pin,pwm<span style="color: #434f54;" class="mycode_color">)</span>;<br />
  <span style="color: #d35400;" class="mycode_color">analogWrite</span><span style="color: #434f54;" class="mycode_color">(</span>Rpwm_pin,pwm<span style="color: #434f54;" class="mycode_color">)</span>;<br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">advance</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #95a5a6;" class="mycode_color">    //  going forward</span><br />
    <span style="color: #434f54;" class="mycode_color">{</span><br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinRB,LOW<span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">  // making motor move towards right rear</span><br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinRF,HIGH<span style="color: #434f54;" class="mycode_color">)</span>;<br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinLB,LOW<span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">  // making motor move towards left rear</span><br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinLF,HIGH<span style="color: #434f54;" class="mycode_color">)</span>; <br />
     Car_state = <span style="color: #005c5f;" class="mycode_color">1</span>; <br />
       <br />
    <span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">turnR</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #95a5a6;" class="mycode_color">        //turning right(dual wheel)</span><br />
    <span style="color: #434f54;" class="mycode_color">{</span><br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinRB,LOW<span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">  //making motor move towards right rear</span><br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinRF,HIGH<span style="color: #434f54;" class="mycode_color">)</span>;<br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinLB,HIGH<span style="color: #434f54;" class="mycode_color">)</span>;<br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinLF,LOW<span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">  //making motor move towards left front</span><br />
     Car_state = <span style="color: #005c5f;" class="mycode_color">4</span>;<br />
    <br />
    <span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">turnL</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #95a5a6;" class="mycode_color">         //turning left(dual wheel)</span><br />
    <span style="color: #434f54;" class="mycode_color">{</span><br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinRB,HIGH<span style="color: #434f54;" class="mycode_color">)</span>;<br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinRF,LOW <span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">   //making motor move towards right front</span><br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinLB,LOW<span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">   //making motor move towards left rear</span><br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinLF,HIGH<span style="color: #434f54;" class="mycode_color">)</span>;<br />
     Car_state = <span style="color: #005c5f;" class="mycode_color">3</span>;<br />
     <br />
    <span style="color: #434f54;" class="mycode_color">}</span>    <br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">stopp</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #95a5a6;" class="mycode_color">        //stop</span><br />
    <span style="color: #434f54;" class="mycode_color">{</span><br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinRB,HIGH<span style="color: #434f54;" class="mycode_color">)</span>;<br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinRF,HIGH<span style="color: #434f54;" class="mycode_color">)</span>;<br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinLB,HIGH<span style="color: #434f54;" class="mycode_color">)</span>;<br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinLF,HIGH<span style="color: #434f54;" class="mycode_color">)</span>;<br />
     Car_state = <span style="color: #005c5f;" class="mycode_color">5</span>;<br />
    <br />
    <span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">back</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #95a5a6;" class="mycode_color">         //back up</span><br />
    <span style="color: #434f54;" class="mycode_color">{</span><br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinRB,HIGH<span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">  //making motor move towards right rear     </span><br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinRF,LOW<span style="color: #434f54;" class="mycode_color">)</span>;<br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinLB,HIGH<span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">  //making motor move towards left rear</span><br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinLF,LOW<span style="color: #434f54;" class="mycode_color">)</span>;<br />
     Car_state = <span style="color: #005c5f;" class="mycode_color">2</span>;<br />
         <br />
    <span style="color: #434f54;" class="mycode_color">}</span><br />
         <br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">Gravity_Sensor</span><span style="color: #434f54;" class="mycode_color">()</span><br />
<span style="color: #434f54;" class="mycode_color">{</span><br />
  flag = <span style="color: #005c5f;" class="mycode_color">0</span>;<br />
  <span style="color: #728e00;" class="mycode_color">while</span> <span style="color: #434f54;" class="mycode_color">(</span>flag == <span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #434f54;" class="mycode_color">)</span> <br />
  <span style="color: #434f54;" class="mycode_color">{</span><br />
    <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">Serial</span>.<span style="color: #d35400;" class="mycode_color">available</span><span style="color: #434f54;" class="mycode_color">())</span><br />
     <span style="color: #434f54;" class="mycode_color">{</span><br />
      bluetooth_data = <span style="color: #d35400;" class="mycode_color">Serial</span>.<span style="color: #d35400;" class="mycode_color">read</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
      <span style="color: #728e00;" class="mycode_color">switch</span> <span style="color: #434f54;" class="mycode_color">(</span>bluetooth_data<span style="color: #434f54;" class="mycode_color">)</span> <br />
     <span style="color: #434f54;" class="mycode_color">{</span><br />
    <span style="color: #728e00;" class="mycode_color">case</span> 'U':<br />
    <span style="color: #d35400;" class="mycode_color">advance</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
    <span style="color: #728e00;" class="mycode_color">break</span>;<br />
   <span style="color: #728e00;" class="mycode_color">case</span> 'D':<br />
    <span style="color: #d35400;" class="mycode_color">back</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
    <span style="color: #728e00;" class="mycode_color">break</span>;<br />
   <span style="color: #728e00;" class="mycode_color">case</span> 'L':<br />
    <span style="color: #d35400;" class="mycode_color">turnL</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
    <span style="color: #728e00;" class="mycode_color">break</span>;<br />
   <span style="color: #728e00;" class="mycode_color">case</span> 'R':<br />
    <span style="color: #d35400;" class="mycode_color">turnR</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
    <span style="color: #728e00;" class="mycode_color">break</span>;<br />
    <span style="color: #728e00;" class="mycode_color">case</span> 'S':<br />
    flag = <span style="color: #005c5f;" class="mycode_color">1</span>;<br />
    <span style="color: #728e00;" class="mycode_color">break</span>;<br />
    <span style="color: #728e00;" class="mycode_color">default</span>: <br />
    <span style="color: #728e00;" class="mycode_color">break</span>;<br />
    <span style="color: #434f54;" class="mycode_color">}</span><br />
      <br />
      <br />
    <br />
   <span style="color: #434f54;" class="mycode_color">}</span><br />
  <span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">Line_Tracking</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #00979d;" class="mycode_color">void</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #95a5a6;" class="mycode_color"> //function of line tracking </span><br />
<span style="color: #434f54;" class="mycode_color">{</span><br />
  flag = <span style="color: #005c5f;" class="mycode_color">0</span>;<br />
  <span style="color: #728e00;" class="mycode_color">while</span> <span style="color: #434f54;" class="mycode_color">(</span>flag == <span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #434f54;" class="mycode_color">)</span> <br />
  <span style="color: #434f54;" class="mycode_color">{</span><br />
 <span style="color: #d35400;" class="mycode_color">Sensor_Scan</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
 <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span>SM == HIGH<span style="color: #434f54;" class="mycode_color">)</span><span style="color: #95a5a6;" class="mycode_color">// middle sensor in black area</span><br />
<span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span>SL == LOW &amp; SR == HIGH<span style="color: #434f54;" class="mycode_color">)</span><span style="color: #95a5a6;" class="mycode_color"> // black on left, white on right, turn left</span><br />
<span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #d35400;" class="mycode_color">turnR</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
<span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #728e00;" class="mycode_color">else</span> <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span>SR == LOW &amp; SL == HIGH<span style="color: #434f54;" class="mycode_color">)</span><span style="color: #95a5a6;" class="mycode_color"> // white on left, black on right, turn right</span><br />
<span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #d35400;" class="mycode_color">turnL</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
<span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #728e00;" class="mycode_color">else</span><span style="color: #95a5a6;" class="mycode_color"> // white on both sides, going forward</span><br />
<span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #d35400;" class="mycode_color">advance</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
<span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">180</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #728e00;" class="mycode_color">else</span><span style="color: #95a5a6;" class="mycode_color"> // middle sensor on white area</span><br />
<span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span>SL== LOW &amp; SR == HIGH<span style="color: #434f54;" class="mycode_color">)</span><span style="color: #95a5a6;" class="mycode_color">// black on left, white on right, turn left</span><br />
<span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #d35400;" class="mycode_color">turnR</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
<span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #728e00;" class="mycode_color">else</span> <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span>SR == LOW &amp; SL == HIGH<span style="color: #434f54;" class="mycode_color">)</span><span style="color: #95a5a6;" class="mycode_color"> // white on left, black on right, turn right</span><br />
<span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #d35400;" class="mycode_color">turnL</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
<span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #728e00;" class="mycode_color">else</span><span style="color: #95a5a6;" class="mycode_color"> // all white, stop</span><br />
<span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #d35400;" class="mycode_color">back</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
<span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">150</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
<span style="color: #d35400;" class="mycode_color">delay</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">100</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
<span style="color: #d35400;" class="mycode_color">stopp</span><span style="color: #434f54;" class="mycode_color">()</span> ;<br />
<span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
  <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">Serial</span>.<span style="color: #d35400;" class="mycode_color">available</span><span style="color: #434f54;" class="mycode_color">())</span><br />
   <span style="color: #434f54;" class="mycode_color">{</span><br />
      bluetooth_data = <span style="color: #d35400;" class="mycode_color">Serial</span>.<span style="color: #d35400;" class="mycode_color">read</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
      <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span>bluetooth_data == 'S'<span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
        flag = <span style="color: #005c5f;" class="mycode_color">1</span>;<br />
      <span style="color: #434f54;" class="mycode_color">}</span><br />
   <span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #00979d;" class="mycode_color">float</span> <span style="color: #d35400;" class="mycode_color">checkdistance</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
  <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>A1, LOW<span style="color: #434f54;" class="mycode_color">)</span>;<br />
  <span style="color: #d35400;" class="mycode_color">delayMicroseconds</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">2</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
  <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>A1, HIGH<span style="color: #434f54;" class="mycode_color">)</span>;<br />
  <span style="color: #d35400;" class="mycode_color">delayMicroseconds</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">10</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
  <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>A1, LOW<span style="color: #434f54;" class="mycode_color">)</span>;<br />
  <span style="color: #00979d;" class="mycode_color">float</span> distance = <span style="color: #d35400;" class="mycode_color">pulseIn</span><span style="color: #434f54;" class="mycode_color">(</span>A0, HIGH<span style="color: #434f54;" class="mycode_color">)</span> / <span style="color: #005c5f;" class="mycode_color">58.00</span>;<br />
  <span style="color: #d35400;" class="mycode_color">delay</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">10</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
  <span style="color: #728e00;" class="mycode_color">return</span> distance;<br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">Detect_obstacle_distance</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
  <span style="color: #d35400;" class="mycode_color">myservo</span>.<span style="color: #d35400;" class="mycode_color">write</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">160</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
  <span style="color: #728e00;" class="mycode_color">for</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #00979d;" class="mycode_color">int</span> i = <span style="color: #005c5f;" class="mycode_color">0</span>; i &lt; <span style="color: #005c5f;" class="mycode_color">3</span>; i = i + <span style="color: #005c5f;" class="mycode_color">1</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
    DL = <span style="color: #d35400;" class="mycode_color">checkdistance</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #d35400;" class="mycode_color">delay</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">100</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
  <span style="color: #434f54;" class="mycode_color">}</span><br />
  <span style="color: #d35400;" class="mycode_color">myservo</span>.<span style="color: #d35400;" class="mycode_color">write</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">20</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
  <span style="color: #728e00;" class="mycode_color">for</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #00979d;" class="mycode_color">int</span> i = <span style="color: #005c5f;" class="mycode_color">0</span>; i&lt;<span style="color: #005c5f;" class="mycode_color">3</span>; i = i + <span style="color: #005c5f;" class="mycode_color">1</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
    DR = <span style="color: #d35400;" class="mycode_color">checkdistance</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #d35400;" class="mycode_color">delay</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">100</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
  <span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">Ultrasonic_Obstacle_Avoidance</span><span style="color: #434f54;" class="mycode_color">()</span><br />
<span style="color: #434f54;" class="mycode_color">{</span>flag = <span style="color: #005c5f;" class="mycode_color">0</span>;<br />
  <span style="color: #728e00;" class="mycode_color">while</span> <span style="color: #434f54;" class="mycode_color">(</span>flag == <span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #434f54;" class="mycode_color">)</span> <br />
  <span style="color: #434f54;" class="mycode_color">{</span><br />
  DM = <span style="color: #d35400;" class="mycode_color">checkdistance</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
  <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span>DM &lt; <span style="color: #005c5f;" class="mycode_color">30</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
    <span style="color: #d35400;" class="mycode_color">stopp</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
    <span style="color: #d35400;" class="mycode_color">delay</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">1000</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
    <span style="color: #d35400;" class="mycode_color">Detect_obstacle_distance</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span>DL &lt; <span style="color: #005c5f;" class="mycode_color">50</span> || DR &lt; <span style="color: #005c5f;" class="mycode_color">50</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
      <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span>DL &gt; DR<span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
        <span style="color: #d35400;" class="mycode_color">myservo</span>.<span style="color: #d35400;" class="mycode_color">write</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">90</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
        <span style="color: #d35400;" class="mycode_color">turnL</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
        <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
        <span style="color: #d35400;" class="mycode_color">delay</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
        <span style="color: #d35400;" class="mycode_color">advance</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
        <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
      <span style="color: #434f54;" class="mycode_color">}</span> <span style="color: #728e00;" class="mycode_color">else</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
        <span style="color: #d35400;" class="mycode_color">myservo</span>.<span style="color: #d35400;" class="mycode_color">write</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">90</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
        <span style="color: #d35400;" class="mycode_color">turnR</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
        <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
        <span style="color: #d35400;" class="mycode_color">delay</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
        <span style="color: #d35400;" class="mycode_color">advance</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
        <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
      <span style="color: #434f54;" class="mycode_color">}</span><br />
    <span style="color: #434f54;" class="mycode_color">}</span> <span style="color: #728e00;" class="mycode_color">else</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
      <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">random</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">1</span>, <span style="color: #005c5f;" class="mycode_color">10</span><span style="color: #434f54;" class="mycode_color">)</span> &gt; <span style="color: #005c5f;" class="mycode_color">5</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
        <span style="color: #d35400;" class="mycode_color">myservo</span>.<span style="color: #d35400;" class="mycode_color">write</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">90</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
        <span style="color: #d35400;" class="mycode_color">turnL</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
        <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
        <span style="color: #d35400;" class="mycode_color">delay</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
        <span style="color: #d35400;" class="mycode_color">advance</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
        <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
      <span style="color: #434f54;" class="mycode_color">}</span> <span style="color: #728e00;" class="mycode_color">else</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
        <span style="color: #d35400;" class="mycode_color">myservo</span>.<span style="color: #d35400;" class="mycode_color">write</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">90</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
        <span style="color: #d35400;" class="mycode_color">turnR</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
        <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
        <span style="color: #d35400;" class="mycode_color">delay</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
        <span style="color: #d35400;" class="mycode_color">advance</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
        <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
      <span style="color: #434f54;" class="mycode_color">}</span><br />
    <span style="color: #434f54;" class="mycode_color">}</span><br />
  <span style="color: #434f54;" class="mycode_color">}</span> <span style="color: #728e00;" class="mycode_color">else</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
    <span style="color: #d35400;" class="mycode_color">advance</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">130</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
  <span style="color: #434f54;" class="mycode_color">}</span><br />
  <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">Serial</span>.<span style="color: #d35400;" class="mycode_color">available</span><span style="color: #434f54;" class="mycode_color">())</span><br />
     <span style="color: #434f54;" class="mycode_color">{</span><br />
      bluetooth_data = <span style="color: #d35400;" class="mycode_color">Serial</span>.<span style="color: #d35400;" class="mycode_color">read</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
      <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span>bluetooth_data == 'S'<span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
        flag = <span style="color: #005c5f;" class="mycode_color">1</span>;<br />
      <span style="color: #434f54;" class="mycode_color">}</span><br />
     <span style="color: #434f54;" class="mycode_color">}</span><br />
 <span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">Infrared_Remote_Control</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #00979d;" class="mycode_color">void</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #95a5a6;" class="mycode_color">   //remote control，when pressing“#”，it quitting from the mode</span><br />
<span style="color: #434f54;" class="mycode_color">{</span>flag = <span style="color: #005c5f;" class="mycode_color">0</span>;<br />
  <span style="color: #728e00;" class="mycode_color">while</span> <span style="color: #434f54;" class="mycode_color">(</span>flag == <span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #434f54;" class="mycode_color">)</span> <br />
  <span style="color: #434f54;" class="mycode_color">{</span><br />
   <span style="color: #728e00;" class="mycode_color">if</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">irrecv</span>.<span style="color: #d35400;" class="mycode_color">decode</span><span style="color: #434f54;" class="mycode_color">(</span>&amp;results<span style="color: #434f54;" class="mycode_color">))</span><span style="color: #95a5a6;" class="mycode_color">  //to judge whether serial port receive data</span><br />
    <span style="color: #434f54;" class="mycode_color">{</span><br />
     Key = <span style="color: #d35400;" class="mycode_color">results</span>.<span style="color: #d35400;" class="mycode_color">value</span>;<br />
    <span style="color: #728e00;" class="mycode_color">switch</span><span style="color: #434f54;" class="mycode_color">(</span>Key<span style="color: #434f54;" class="mycode_color">)</span><br />
     <span style="color: #434f54;" class="mycode_color">{</span><br />
       <span style="color: #728e00;" class="mycode_color">case</span> IR_Go:<span style="color: #d35400;" class="mycode_color">advance</span><span style="color: #434f54;" class="mycode_color">()</span>;<span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">   //UP</span><br />
       <span style="color: #728e00;" class="mycode_color">break</span>;<br />
       <span style="color: #728e00;" class="mycode_color">case</span> IR_Back: <span style="color: #d35400;" class="mycode_color">back</span><span style="color: #434f54;" class="mycode_color">()</span>;<span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">   //back</span><br />
       <span style="color: #728e00;" class="mycode_color">break</span>;<br />
       <span style="color: #728e00;" class="mycode_color">case</span> IR_Left:<span style="color: #d35400;" class="mycode_color">turnL</span><span style="color: #434f54;" class="mycode_color">()</span>;<span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">   //Left    </span><br />
       <span style="color: #728e00;" class="mycode_color">break</span>;<br />
       <span style="color: #728e00;" class="mycode_color">case</span> IR_Right:<span style="color: #d35400;" class="mycode_color">turnR</span><span style="color: #434f54;" class="mycode_color">()</span>;<span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color"> //Righ</span><br />
       <span style="color: #728e00;" class="mycode_color">break</span>;<br />
       <span style="color: #728e00;" class="mycode_color">case</span> IR_Stop:<span style="color: #d35400;" class="mycode_color">stopp</span><span style="color: #434f54;" class="mycode_color">()</span>;<span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">   //stop</span><br />
       <span style="color: #728e00;" class="mycode_color">break</span>;<br />
       <span style="color: #728e00;" class="mycode_color">default</span>: <br />
       <span style="color: #728e00;" class="mycode_color">break</span>;      <br />
     <span style="color: #434f54;" class="mycode_color">}</span> <br />
     <span style="color: #d35400;" class="mycode_color">irrecv</span>.<span style="color: #d35400;" class="mycode_color">resume</span><span style="color: #434f54;" class="mycode_color">()</span>;<span style="color: #95a5a6;" class="mycode_color"> // Receive the next value</span><br />
    <span style="color: #434f54;" class="mycode_color">}</span><br />
    <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">Serial</span>.<span style="color: #d35400;" class="mycode_color">available</span><span style="color: #434f54;" class="mycode_color">())</span><br />
     <span style="color: #434f54;" class="mycode_color">{</span><br />
      bluetooth_data = <span style="color: #d35400;" class="mycode_color">Serial</span>.<span style="color: #d35400;" class="mycode_color">read</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
      <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span>bluetooth_data == 'S'<span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
        flag = <span style="color: #005c5f;" class="mycode_color">1</span>;<br />
      <span style="color: #434f54;" class="mycode_color">}</span><br />
     <span style="color: #434f54;" class="mycode_color">}</span><br />
     <br />
  <span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">setup</span><span style="color: #434f54;" class="mycode_color">()</span> <br />
<span style="color: #434f54;" class="mycode_color">{</span> <br />
   <span style="color: #d35400;" class="mycode_color">myservo</span>.<span style="color: #d35400;" class="mycode_color">attach</span><span style="color: #434f54;" class="mycode_color">(</span>A2<span style="color: #434f54;" class="mycode_color">)</span>;<br />
   <span style="color: #d35400;" class="mycode_color">M_Control_IO_config</span><span style="color: #434f54;" class="mycode_color">()</span>;<span style="color: #95a5a6;" class="mycode_color">     //motor controlling the initialization of IO</span><br />
   <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">  //setting initialized speed</span><br />
  <br />
   <span style="color: #d35400;" class="mycode_color">Sensor_IO_Config</span><span style="color: #434f54;" class="mycode_color">()</span>;<span style="color: #95a5a6;" class="mycode_color">            //initializing IO of line tracking module </span><br />
   <span style="color: #d35400;" class="mycode_color">irrecv</span>.<span style="color: #d35400;" class="mycode_color">enableIRIn</span><span style="color: #434f54;" class="mycode_color">()</span>;<span style="color: #95a5a6;" class="mycode_color">           //starting receiving IR remote control signal</span><br />
   <span style="color: #d35400;" class="mycode_color">Serial</span>.<span style="color: #d35400;" class="mycode_color">begin</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">9600</span><span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">            //initialized serial port , using Bluetooth as serial port, setting baud </span><br />
   <span style="color: #d35400;" class="mycode_color">myservo</span>.<span style="color: #d35400;" class="mycode_color">write</span><span style="color: #434f54;" class="mycode_color">(</span>DuoJiao<span style="color: #434f54;" class="mycode_color">)</span>;<br />
   <span style="color: #d35400;" class="mycode_color">stopp</span><span style="color: #434f54;" class="mycode_color">()</span>;<span style="color: #95a5a6;" class="mycode_color">                       //stop</span><br />
   <span style="color: #d35400;" class="mycode_color">delay</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">1000</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
   DL = <span style="color: #005c5f;" class="mycode_color">0</span>;<br />
   DM = <span style="color: #005c5f;" class="mycode_color">0</span>;<br />
   DR = <span style="color: #005c5f;" class="mycode_color">0</span>;<br />
<span style="color: #434f54;" class="mycode_color">}</span> <br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">loop</span><span style="color: #434f54;" class="mycode_color">()</span> <br />
<span style="color: #434f54;" class="mycode_color">{</span>  <br />
  <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">Serial</span>.<span style="color: #d35400;" class="mycode_color">available</span><span style="color: #434f54;" class="mycode_color">())</span><br />
  <span style="color: #434f54;" class="mycode_color">{</span><br />
    bluetooth_data = <span style="color: #d35400;" class="mycode_color">Serial</span>.<span style="color: #d35400;" class="mycode_color">read</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #d35400;" class="mycode_color">Serial</span>.<span style="color: #d35400;" class="mycode_color">println</span><span style="color: #434f54;" class="mycode_color">(</span>bluetooth_data<span style="color: #434f54;" class="mycode_color">)</span>;<br />
  <span style="color: #434f54;" class="mycode_color">}</span><br />
  <span style="color: #728e00;" class="mycode_color">switch</span> <span style="color: #434f54;" class="mycode_color">(</span>bluetooth_data<span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
    <span style="color: #728e00;" class="mycode_color">case</span> 'U':<br />
    <span style="color: #d35400;" class="mycode_color">advance</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
    <span style="color: #728e00;" class="mycode_color">break</span>;<br />
   <span style="color: #728e00;" class="mycode_color">case</span> 'D':<br />
    <span style="color: #d35400;" class="mycode_color">back</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
    <span style="color: #728e00;" class="mycode_color">break</span>;<br />
   <span style="color: #728e00;" class="mycode_color">case</span> 'L':<br />
    <span style="color: #d35400;" class="mycode_color">turnL</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
    <span style="color: #728e00;" class="mycode_color">break</span>;<br />
   <span style="color: #728e00;" class="mycode_color">case</span> 'R':<br />
    <span style="color: #d35400;" class="mycode_color">turnR</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
    <span style="color: #728e00;" class="mycode_color">break</span>;<br />
   <span style="color: #728e00;" class="mycode_color">case</span> 'S':<br />
    <span style="color: #d35400;" class="mycode_color">stopp</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
    <span style="color: #728e00;" class="mycode_color">break</span>;<br />
   <span style="color: #728e00;" class="mycode_color">case</span> 'T':<br />
    <span style="color: #d35400;" class="mycode_color">stopp</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #d35400;" class="mycode_color">Line_Tracking</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #728e00;" class="mycode_color">break</span>;<br />
    <span style="color: #728e00;" class="mycode_color">case</span> 'O':<br />
    <span style="color: #d35400;" class="mycode_color">stopp</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #d35400;" class="mycode_color">Ultrasonic_Obstacle_Avoidance</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #728e00;" class="mycode_color">break</span>;<br />
    <span style="color: #728e00;" class="mycode_color">case</span> 'I':<br />
    <span style="color: #d35400;" class="mycode_color">stopp</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #d35400;" class="mycode_color">Infrared_Remote_Control</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #728e00;" class="mycode_color">break</span>;<br />
    <span style="color: #728e00;" class="mycode_color">case</span> 'G':<br />
    <span style="color: #d35400;" class="mycode_color">stopp</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #d35400;" class="mycode_color">Gravity_Sensor</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #728e00;" class="mycode_color">break</span>;<br />
    <span style="color: #728e00;" class="mycode_color">default</span>: <br />
    <span style="color: #728e00;" class="mycode_color">break</span>;<br />
  <span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
</span></span>]]></description>
			<content:encoded><![CDATA[Buenas tardes, quisiera saber si alguien puede ayudarme a solucionar un error en un codigo, permitanme darles contexto, hace un par de semanas compre un robot para armar por mercado libre (<span style="font-weight: bold;" class="mycode_b">Kit de coche robot inteligente 4wd compatible con arduino uno R3</span>), esto para un concurso de robots (amigable), al parecer todo esta bien pero cuando quiero cargar el codigo en la placa de arduino UNO me marca un error el cual es el siguiente.<br />
     avrdude: stk500_recv(): programmer is not responding<br />
     avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x9c<br />
     avrdude: stk500_recv(): programmer is not responding<br />
     avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x9c<br />
     avrdude: stk500_recv(): programmer is not responding<br />
     avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x9c<br />
     avrdude: stk500_recv(): programmer is not responding<br />
     avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x9c<br />
     avrdude: stk500_recv(): programmer is not responding<br />
     avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x9c<br />
     avrdude: stk500_recv(): programmer is not responding<br />
     avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x9c<br />
     avrdude: stk500_recv(): programmer is not responding<br />
     avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x9c<br />
     avrdude: stk500_recv(): programmer is not responding<br />
     avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x9c<br />
     avrdude: stk500_recv(): programmer is not responding<br />
     avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x9c<br />
     avrdude: stk500_recv(): programmer is not responding<br />
     avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x9c<br />
     Failed uploading: uploading error: exit status 1<br />
<br />
cabe decir que el codigo viene incluido en el kit del robot el cual es el siguiente.<br />
<span style="color: #4e5b61;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font"><br />
<span style="color: #728e00;" class="mycode_color">#include</span> <span style="color: #005c5f;" class="mycode_color">&lt;Wire.h&gt;</span>              <span style="color: #95a5a6;" class="mycode_color">//including libraries of I2C</span><br />
<span style="color: #728e00;" class="mycode_color">#include</span> <span style="color: #005c5f;" class="mycode_color">&lt;IRremote.h&gt;</span>          <span style="color: #95a5a6;" class="mycode_color">//including libraries of remote control</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">RECV_PIN</span>  <span style="color: #005c5f;" class="mycode_color">12</span><span style="color: #95a5a6;" class="mycode_color">        //pin 12 of IR remoter control receiver</span><br />
<span style="color: #728e00;" class="mycode_color">#include</span> <span style="color: #005c5f;" class="mycode_color">&lt;Servo.h&gt;</span><br />
IRrecv <span style="color: #d35400;" class="mycode_color">irrecv</span><span style="color: #434f54;" class="mycode_color">(</span>RECV_PIN<span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">      //defining pin 12 of IR remoter control</span><br />
Servo myservo;<br />
decode_results res;<br />
decode_results results;<span style="color: #95a5a6;" class="mycode_color">         //cache of decode of IR remoter control</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">IR_Go</span>       0x<span style="color: #005c5f;" class="mycode_color">00FF18E7</span><span style="color: #95a5a6;" class="mycode_color"> //going forward</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">IR_Back</span>     0x<span style="color: #005c5f;" class="mycode_color">00FF4AB5</span><span style="color: #95a5a6;" class="mycode_color">  //going backward</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">IR_Left</span>     0x<span style="color: #005c5f;" class="mycode_color">00FF10EF</span><span style="color: #95a5a6;" class="mycode_color">//turning left</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">IR_Right</span>    0x<span style="color: #005c5f;" class="mycode_color">00FF5AA5</span><span style="color: #95a5a6;" class="mycode_color">  //turning right</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">IR_Stop</span>     0x<span style="color: #005c5f;" class="mycode_color">00FF38C7</span><span style="color: #95a5a6;" class="mycode_color">  //stop </span><br />
<span style="color: #95a5a6;" class="mycode_color">//////////////////////////////////////////////////</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">SensorLeft</span>    <span style="color: #005c5f;" class="mycode_color">9</span><span style="color: #95a5a6;" class="mycode_color">   //sensor left pin of line tracking module </span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">SensorMiddle</span>  <span style="color: #005c5f;" class="mycode_color">10</span><span style="color: #95a5a6;" class="mycode_color">   //sensor middle pin of line tracking module</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">SensorRight</span>   <span style="color: #005c5f;" class="mycode_color">11</span><span style="color: #95a5a6;" class="mycode_color">  //sensor right pin of line tracking module</span><br />
<span style="color: #00979d;" class="mycode_color">unsigned</span> <span style="color: #00979d;" class="mycode_color">char</span> SL;<span style="color: #95a5a6;" class="mycode_color">        //state of left sensor of line tracking module</span><br />
<span style="color: #00979d;" class="mycode_color">unsigned</span> <span style="color: #00979d;" class="mycode_color">char</span> SM;<span style="color: #95a5a6;" class="mycode_color">        //state of middle sensor of line tracking module</span><br />
<span style="color: #00979d;" class="mycode_color">unsigned</span> <span style="color: #00979d;" class="mycode_color">char</span> SR;<span style="color: #95a5a6;" class="mycode_color">        //state of right sensor of line tracking module</span><br />
<span style="color: #00979d;" class="mycode_color">volatile</span> <span style="color: #00979d;" class="mycode_color">int</span> DL;<br />
<span style="color: #00979d;" class="mycode_color">volatile</span> <span style="color: #00979d;" class="mycode_color">int</span> DM;<br />
<span style="color: #00979d;" class="mycode_color">volatile</span> <span style="color: #00979d;" class="mycode_color">int</span> DR;<br />
<span style="color: #00979d;" class="mycode_color">int</span> inputPin=A0;<span style="color: #95a5a6;" class="mycode_color">  // ultrasonic module   ECHO to A0</span><br />
<span style="color: #00979d;" class="mycode_color">int</span> outputPin=A1;<span style="color: #95a5a6;" class="mycode_color">  // ultrasonic module  TRIG to A1</span><br />
<span style="color: #00979d;" class="mycode_color">unsigned</span> <span style="color: #00979d;" class="mycode_color">char</span> bluetooth_data;       <br />
<span style="color: #00979d;" class="mycode_color">unsigned</span> <span style="color: #00979d;" class="mycode_color">long</span> Key;<br />
<span style="color: #00979d;" class="mycode_color">unsigned</span> <span style="color: #00979d;" class="mycode_color">long</span> Key1;<br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">Lpwm_pin</span>  <span style="color: #005c5f;" class="mycode_color">5</span><span style="color: #95a5a6;" class="mycode_color">     //pin of controlling speed---- ENA of motor driver board</span><br />
<span style="color: #728e00;" class="mycode_color">#define</span> <span style="color: #d35400;" class="mycode_color">Rpwm_pin</span>  <span style="color: #005c5f;" class="mycode_color">6</span><span style="color: #95a5a6;" class="mycode_color">    //pin of controlling speed---- ENB of motor driver board</span><br />
<span style="color: #00979d;" class="mycode_color">int</span> pinLB=<span style="color: #005c5f;" class="mycode_color">2</span>;<span style="color: #95a5a6;" class="mycode_color">             //pin of controlling turning---- IN1 of motor driver board</span><br />
<span style="color: #00979d;" class="mycode_color">int</span> pinLF=<span style="color: #005c5f;" class="mycode_color">4</span>;<span style="color: #95a5a6;" class="mycode_color">             //pin of controlling turning---- IN2 of motor driver board</span><br />
<span style="color: #00979d;" class="mycode_color">int</span> pinRB=<span style="color: #005c5f;" class="mycode_color">7</span>;<span style="color: #95a5a6;" class="mycode_color">            //pin of controlling turning---- IN3 of motor driver board</span><br />
<span style="color: #00979d;" class="mycode_color">int</span> pinRF=<span style="color: #005c5f;" class="mycode_color">8</span>;<span style="color: #95a5a6;" class="mycode_color">            //pin of controlling turning---- IN4 of motor driver board</span><br />
<span style="color: #00979d;" class="mycode_color">int</span> flag=<span style="color: #005c5f;" class="mycode_color">0</span>;<br />
<span style="color: #00979d;" class="mycode_color">int</span> Car_state=<span style="color: #005c5f;" class="mycode_color">0</span>;<span style="color: #95a5a6;" class="mycode_color">             //the working state of car</span><br />
<span style="color: #00979d;" class="mycode_color">int</span> myangle;<span style="color: #95a5a6;" class="mycode_color">                //defining variable of angle</span><br />
<span style="color: #00979d;" class="mycode_color">int</span> pulsewidth;<span style="color: #95a5a6;" class="mycode_color">              //defining variable of pulse width</span><br />
<span style="color: #00979d;" class="mycode_color">unsigned</span> <span style="color: #00979d;" class="mycode_color">char</span> DuoJiao=<span style="color: #005c5f;" class="mycode_color">90</span>;<span style="color: #95a5a6;" class="mycode_color">    //initialized angle of motor at 90°</span><br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">Sensor_IO_Config</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #95a5a6;" class="mycode_color">     //IO initialized function of three line tracking , all setting at input</span><br />
<span style="color: #434f54;" class="mycode_color">{</span><br />
  <span style="color: #d35400;" class="mycode_color">pinMode</span><span style="color: #434f54;" class="mycode_color">(</span>SensorLeft,INPUT<span style="color: #434f54;" class="mycode_color">)</span>;<br />
  <span style="color: #d35400;" class="mycode_color">pinMode</span><span style="color: #434f54;" class="mycode_color">(</span>SensorMiddle,INPUT<span style="color: #434f54;" class="mycode_color">)</span>;<br />
  <span style="color: #d35400;" class="mycode_color">pinMode</span><span style="color: #434f54;" class="mycode_color">(</span>SensorRight,INPUT<span style="color: #434f54;" class="mycode_color">)</span>;<br />
  <span style="color: #d35400;" class="mycode_color">pinMode</span><span style="color: #434f54;" class="mycode_color">(</span>inputPin, INPUT<span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">      //starting receiving IR remote control signal</span><br />
  <span style="color: #d35400;" class="mycode_color">pinMode</span><span style="color: #434f54;" class="mycode_color">(</span>outputPin, OUTPUT<span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">    //IO of ultrasonic module</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">Sensor_Scan</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #00979d;" class="mycode_color">void</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #95a5a6;" class="mycode_color"> //function of reading-in signal of line tracking module </span><br />
<span style="color: #434f54;" class="mycode_color">{</span><br />
  SL = <span style="color: #d35400;" class="mycode_color">digitalRead</span><span style="color: #434f54;" class="mycode_color">(</span>SensorLeft<span style="color: #434f54;" class="mycode_color">)</span>;<br />
  SM = <span style="color: #d35400;" class="mycode_color">digitalRead</span><span style="color: #434f54;" class="mycode_color">(</span>SensorMiddle<span style="color: #434f54;" class="mycode_color">)</span>;<br />
  SR = <span style="color: #d35400;" class="mycode_color">digitalRead</span><span style="color: #434f54;" class="mycode_color">(</span>SensorRight<span style="color: #434f54;" class="mycode_color">)</span>;<br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">M_Control_IO_config</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #00979d;" class="mycode_color">void</span><span style="color: #434f54;" class="mycode_color">)</span><br />
<span style="color: #434f54;" class="mycode_color">{</span><br />
  <span style="color: #d35400;" class="mycode_color">pinMode</span><span style="color: #434f54;" class="mycode_color">(</span>pinLB,OUTPUT<span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color"> // /pin 2</span><br />
  <span style="color: #d35400;" class="mycode_color">pinMode</span><span style="color: #434f54;" class="mycode_color">(</span>pinLF,OUTPUT<span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color"> // pin 4</span><br />
  <span style="color: #d35400;" class="mycode_color">pinMode</span><span style="color: #434f54;" class="mycode_color">(</span>pinRB,OUTPUT<span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color"> // pin 7</span><br />
  <span style="color: #d35400;" class="mycode_color">pinMode</span><span style="color: #434f54;" class="mycode_color">(</span>pinRF,OUTPUT<span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">  // pin 8</span><br />
  <span style="color: #d35400;" class="mycode_color">pinMode</span><span style="color: #434f54;" class="mycode_color">(</span>Lpwm_pin,OUTPUT<span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">  // pin 5 (PWM) </span><br />
  <span style="color: #d35400;" class="mycode_color">pinMode</span><span style="color: #434f54;" class="mycode_color">(</span>Rpwm_pin,OUTPUT<span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">  // pin6(PWM)   </span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #00979d;" class="mycode_color">unsigned</span> <span style="color: #00979d;" class="mycode_color">char</span> <span style="color: #434f54;" class="mycode_color">pwm)</span><span style="color: #95a5a6;" class="mycode_color"> //function of setting speed</span><br />
<span style="color: #434f54;" class="mycode_color">{</span><br />
  <span style="color: #d35400;" class="mycode_color">analogWrite</span><span style="color: #434f54;" class="mycode_color">(</span>Lpwm_pin,pwm<span style="color: #434f54;" class="mycode_color">)</span>;<br />
  <span style="color: #d35400;" class="mycode_color">analogWrite</span><span style="color: #434f54;" class="mycode_color">(</span>Rpwm_pin,pwm<span style="color: #434f54;" class="mycode_color">)</span>;<br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">advance</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #95a5a6;" class="mycode_color">    //  going forward</span><br />
    <span style="color: #434f54;" class="mycode_color">{</span><br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinRB,LOW<span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">  // making motor move towards right rear</span><br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinRF,HIGH<span style="color: #434f54;" class="mycode_color">)</span>;<br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinLB,LOW<span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">  // making motor move towards left rear</span><br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinLF,HIGH<span style="color: #434f54;" class="mycode_color">)</span>; <br />
     Car_state = <span style="color: #005c5f;" class="mycode_color">1</span>; <br />
       <br />
    <span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">turnR</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #95a5a6;" class="mycode_color">        //turning right(dual wheel)</span><br />
    <span style="color: #434f54;" class="mycode_color">{</span><br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinRB,LOW<span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">  //making motor move towards right rear</span><br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinRF,HIGH<span style="color: #434f54;" class="mycode_color">)</span>;<br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinLB,HIGH<span style="color: #434f54;" class="mycode_color">)</span>;<br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinLF,LOW<span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">  //making motor move towards left front</span><br />
     Car_state = <span style="color: #005c5f;" class="mycode_color">4</span>;<br />
    <br />
    <span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">turnL</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #95a5a6;" class="mycode_color">         //turning left(dual wheel)</span><br />
    <span style="color: #434f54;" class="mycode_color">{</span><br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinRB,HIGH<span style="color: #434f54;" class="mycode_color">)</span>;<br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinRF,LOW <span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">   //making motor move towards right front</span><br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinLB,LOW<span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">   //making motor move towards left rear</span><br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinLF,HIGH<span style="color: #434f54;" class="mycode_color">)</span>;<br />
     Car_state = <span style="color: #005c5f;" class="mycode_color">3</span>;<br />
     <br />
    <span style="color: #434f54;" class="mycode_color">}</span>    <br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">stopp</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #95a5a6;" class="mycode_color">        //stop</span><br />
    <span style="color: #434f54;" class="mycode_color">{</span><br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinRB,HIGH<span style="color: #434f54;" class="mycode_color">)</span>;<br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinRF,HIGH<span style="color: #434f54;" class="mycode_color">)</span>;<br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinLB,HIGH<span style="color: #434f54;" class="mycode_color">)</span>;<br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinLF,HIGH<span style="color: #434f54;" class="mycode_color">)</span>;<br />
     Car_state = <span style="color: #005c5f;" class="mycode_color">5</span>;<br />
    <br />
    <span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">back</span><span style="color: #434f54;" class="mycode_color">()</span><span style="color: #95a5a6;" class="mycode_color">         //back up</span><br />
    <span style="color: #434f54;" class="mycode_color">{</span><br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinRB,HIGH<span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">  //making motor move towards right rear     </span><br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinRF,LOW<span style="color: #434f54;" class="mycode_color">)</span>;<br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinLB,HIGH<span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">  //making motor move towards left rear</span><br />
     <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>pinLF,LOW<span style="color: #434f54;" class="mycode_color">)</span>;<br />
     Car_state = <span style="color: #005c5f;" class="mycode_color">2</span>;<br />
         <br />
    <span style="color: #434f54;" class="mycode_color">}</span><br />
         <br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">Gravity_Sensor</span><span style="color: #434f54;" class="mycode_color">()</span><br />
<span style="color: #434f54;" class="mycode_color">{</span><br />
  flag = <span style="color: #005c5f;" class="mycode_color">0</span>;<br />
  <span style="color: #728e00;" class="mycode_color">while</span> <span style="color: #434f54;" class="mycode_color">(</span>flag == <span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #434f54;" class="mycode_color">)</span> <br />
  <span style="color: #434f54;" class="mycode_color">{</span><br />
    <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">Serial</span>.<span style="color: #d35400;" class="mycode_color">available</span><span style="color: #434f54;" class="mycode_color">())</span><br />
     <span style="color: #434f54;" class="mycode_color">{</span><br />
      bluetooth_data = <span style="color: #d35400;" class="mycode_color">Serial</span>.<span style="color: #d35400;" class="mycode_color">read</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
      <span style="color: #728e00;" class="mycode_color">switch</span> <span style="color: #434f54;" class="mycode_color">(</span>bluetooth_data<span style="color: #434f54;" class="mycode_color">)</span> <br />
     <span style="color: #434f54;" class="mycode_color">{</span><br />
    <span style="color: #728e00;" class="mycode_color">case</span> 'U':<br />
    <span style="color: #d35400;" class="mycode_color">advance</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
    <span style="color: #728e00;" class="mycode_color">break</span>;<br />
   <span style="color: #728e00;" class="mycode_color">case</span> 'D':<br />
    <span style="color: #d35400;" class="mycode_color">back</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
    <span style="color: #728e00;" class="mycode_color">break</span>;<br />
   <span style="color: #728e00;" class="mycode_color">case</span> 'L':<br />
    <span style="color: #d35400;" class="mycode_color">turnL</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
    <span style="color: #728e00;" class="mycode_color">break</span>;<br />
   <span style="color: #728e00;" class="mycode_color">case</span> 'R':<br />
    <span style="color: #d35400;" class="mycode_color">turnR</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
    <span style="color: #728e00;" class="mycode_color">break</span>;<br />
    <span style="color: #728e00;" class="mycode_color">case</span> 'S':<br />
    flag = <span style="color: #005c5f;" class="mycode_color">1</span>;<br />
    <span style="color: #728e00;" class="mycode_color">break</span>;<br />
    <span style="color: #728e00;" class="mycode_color">default</span>: <br />
    <span style="color: #728e00;" class="mycode_color">break</span>;<br />
    <span style="color: #434f54;" class="mycode_color">}</span><br />
      <br />
      <br />
    <br />
   <span style="color: #434f54;" class="mycode_color">}</span><br />
  <span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">Line_Tracking</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #00979d;" class="mycode_color">void</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #95a5a6;" class="mycode_color"> //function of line tracking </span><br />
<span style="color: #434f54;" class="mycode_color">{</span><br />
  flag = <span style="color: #005c5f;" class="mycode_color">0</span>;<br />
  <span style="color: #728e00;" class="mycode_color">while</span> <span style="color: #434f54;" class="mycode_color">(</span>flag == <span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #434f54;" class="mycode_color">)</span> <br />
  <span style="color: #434f54;" class="mycode_color">{</span><br />
 <span style="color: #d35400;" class="mycode_color">Sensor_Scan</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
 <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span>SM == HIGH<span style="color: #434f54;" class="mycode_color">)</span><span style="color: #95a5a6;" class="mycode_color">// middle sensor in black area</span><br />
<span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span>SL == LOW &amp; SR == HIGH<span style="color: #434f54;" class="mycode_color">)</span><span style="color: #95a5a6;" class="mycode_color"> // black on left, white on right, turn left</span><br />
<span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #d35400;" class="mycode_color">turnR</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
<span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #728e00;" class="mycode_color">else</span> <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span>SR == LOW &amp; SL == HIGH<span style="color: #434f54;" class="mycode_color">)</span><span style="color: #95a5a6;" class="mycode_color"> // white on left, black on right, turn right</span><br />
<span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #d35400;" class="mycode_color">turnL</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
<span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #728e00;" class="mycode_color">else</span><span style="color: #95a5a6;" class="mycode_color"> // white on both sides, going forward</span><br />
<span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #d35400;" class="mycode_color">advance</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
<span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">180</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #728e00;" class="mycode_color">else</span><span style="color: #95a5a6;" class="mycode_color"> // middle sensor on white area</span><br />
<span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span>SL== LOW &amp; SR == HIGH<span style="color: #434f54;" class="mycode_color">)</span><span style="color: #95a5a6;" class="mycode_color">// black on left, white on right, turn left</span><br />
<span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #d35400;" class="mycode_color">turnR</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
<span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #728e00;" class="mycode_color">else</span> <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span>SR == LOW &amp; SL == HIGH<span style="color: #434f54;" class="mycode_color">)</span><span style="color: #95a5a6;" class="mycode_color"> // white on left, black on right, turn right</span><br />
<span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #d35400;" class="mycode_color">turnL</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
<span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #728e00;" class="mycode_color">else</span><span style="color: #95a5a6;" class="mycode_color"> // all white, stop</span><br />
<span style="color: #434f54;" class="mycode_color">{</span><br />
<span style="color: #d35400;" class="mycode_color">back</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
<span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">150</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
<span style="color: #d35400;" class="mycode_color">delay</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">100</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
<span style="color: #d35400;" class="mycode_color">stopp</span><span style="color: #434f54;" class="mycode_color">()</span> ;<br />
<span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
  <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">Serial</span>.<span style="color: #d35400;" class="mycode_color">available</span><span style="color: #434f54;" class="mycode_color">())</span><br />
   <span style="color: #434f54;" class="mycode_color">{</span><br />
      bluetooth_data = <span style="color: #d35400;" class="mycode_color">Serial</span>.<span style="color: #d35400;" class="mycode_color">read</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
      <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span>bluetooth_data == 'S'<span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
        flag = <span style="color: #005c5f;" class="mycode_color">1</span>;<br />
      <span style="color: #434f54;" class="mycode_color">}</span><br />
   <span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #00979d;" class="mycode_color">float</span> <span style="color: #d35400;" class="mycode_color">checkdistance</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
  <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>A1, LOW<span style="color: #434f54;" class="mycode_color">)</span>;<br />
  <span style="color: #d35400;" class="mycode_color">delayMicroseconds</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">2</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
  <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>A1, HIGH<span style="color: #434f54;" class="mycode_color">)</span>;<br />
  <span style="color: #d35400;" class="mycode_color">delayMicroseconds</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">10</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
  <span style="color: #d35400;" class="mycode_color">digitalWrite</span><span style="color: #434f54;" class="mycode_color">(</span>A1, LOW<span style="color: #434f54;" class="mycode_color">)</span>;<br />
  <span style="color: #00979d;" class="mycode_color">float</span> distance = <span style="color: #d35400;" class="mycode_color">pulseIn</span><span style="color: #434f54;" class="mycode_color">(</span>A0, HIGH<span style="color: #434f54;" class="mycode_color">)</span> / <span style="color: #005c5f;" class="mycode_color">58.00</span>;<br />
  <span style="color: #d35400;" class="mycode_color">delay</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">10</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
  <span style="color: #728e00;" class="mycode_color">return</span> distance;<br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">Detect_obstacle_distance</span><span style="color: #434f54;" class="mycode_color">()</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
  <span style="color: #d35400;" class="mycode_color">myservo</span>.<span style="color: #d35400;" class="mycode_color">write</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">160</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
  <span style="color: #728e00;" class="mycode_color">for</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #00979d;" class="mycode_color">int</span> i = <span style="color: #005c5f;" class="mycode_color">0</span>; i &lt; <span style="color: #005c5f;" class="mycode_color">3</span>; i = i + <span style="color: #005c5f;" class="mycode_color">1</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
    DL = <span style="color: #d35400;" class="mycode_color">checkdistance</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #d35400;" class="mycode_color">delay</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">100</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
  <span style="color: #434f54;" class="mycode_color">}</span><br />
  <span style="color: #d35400;" class="mycode_color">myservo</span>.<span style="color: #d35400;" class="mycode_color">write</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">20</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
  <span style="color: #728e00;" class="mycode_color">for</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #00979d;" class="mycode_color">int</span> i = <span style="color: #005c5f;" class="mycode_color">0</span>; i&lt;<span style="color: #005c5f;" class="mycode_color">3</span>; i = i + <span style="color: #005c5f;" class="mycode_color">1</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
    DR = <span style="color: #d35400;" class="mycode_color">checkdistance</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #d35400;" class="mycode_color">delay</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">100</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
  <span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">Ultrasonic_Obstacle_Avoidance</span><span style="color: #434f54;" class="mycode_color">()</span><br />
<span style="color: #434f54;" class="mycode_color">{</span>flag = <span style="color: #005c5f;" class="mycode_color">0</span>;<br />
  <span style="color: #728e00;" class="mycode_color">while</span> <span style="color: #434f54;" class="mycode_color">(</span>flag == <span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #434f54;" class="mycode_color">)</span> <br />
  <span style="color: #434f54;" class="mycode_color">{</span><br />
  DM = <span style="color: #d35400;" class="mycode_color">checkdistance</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
  <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span>DM &lt; <span style="color: #005c5f;" class="mycode_color">30</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
    <span style="color: #d35400;" class="mycode_color">stopp</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
    <span style="color: #d35400;" class="mycode_color">delay</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">1000</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
    <span style="color: #d35400;" class="mycode_color">Detect_obstacle_distance</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span>DL &lt; <span style="color: #005c5f;" class="mycode_color">50</span> || DR &lt; <span style="color: #005c5f;" class="mycode_color">50</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
      <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span>DL &gt; DR<span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
        <span style="color: #d35400;" class="mycode_color">myservo</span>.<span style="color: #d35400;" class="mycode_color">write</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">90</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
        <span style="color: #d35400;" class="mycode_color">turnL</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
        <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
        <span style="color: #d35400;" class="mycode_color">delay</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
        <span style="color: #d35400;" class="mycode_color">advance</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
        <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
      <span style="color: #434f54;" class="mycode_color">}</span> <span style="color: #728e00;" class="mycode_color">else</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
        <span style="color: #d35400;" class="mycode_color">myservo</span>.<span style="color: #d35400;" class="mycode_color">write</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">90</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
        <span style="color: #d35400;" class="mycode_color">turnR</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
        <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
        <span style="color: #d35400;" class="mycode_color">delay</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
        <span style="color: #d35400;" class="mycode_color">advance</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
        <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
      <span style="color: #434f54;" class="mycode_color">}</span><br />
    <span style="color: #434f54;" class="mycode_color">}</span> <span style="color: #728e00;" class="mycode_color">else</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
      <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">random</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">1</span>, <span style="color: #005c5f;" class="mycode_color">10</span><span style="color: #434f54;" class="mycode_color">)</span> &gt; <span style="color: #005c5f;" class="mycode_color">5</span><span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
        <span style="color: #d35400;" class="mycode_color">myservo</span>.<span style="color: #d35400;" class="mycode_color">write</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">90</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
        <span style="color: #d35400;" class="mycode_color">turnL</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
        <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
        <span style="color: #d35400;" class="mycode_color">delay</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
        <span style="color: #d35400;" class="mycode_color">advance</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
        <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
      <span style="color: #434f54;" class="mycode_color">}</span> <span style="color: #728e00;" class="mycode_color">else</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
        <span style="color: #d35400;" class="mycode_color">myservo</span>.<span style="color: #d35400;" class="mycode_color">write</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">90</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
        <span style="color: #d35400;" class="mycode_color">turnR</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
        <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
        <span style="color: #d35400;" class="mycode_color">delay</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
        <span style="color: #d35400;" class="mycode_color">advance</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
        <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
      <span style="color: #434f54;" class="mycode_color">}</span><br />
    <span style="color: #434f54;" class="mycode_color">}</span><br />
  <span style="color: #434f54;" class="mycode_color">}</span> <span style="color: #728e00;" class="mycode_color">else</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
    <span style="color: #d35400;" class="mycode_color">advance</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">130</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
  <span style="color: #434f54;" class="mycode_color">}</span><br />
  <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">Serial</span>.<span style="color: #d35400;" class="mycode_color">available</span><span style="color: #434f54;" class="mycode_color">())</span><br />
     <span style="color: #434f54;" class="mycode_color">{</span><br />
      bluetooth_data = <span style="color: #d35400;" class="mycode_color">Serial</span>.<span style="color: #d35400;" class="mycode_color">read</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
      <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span>bluetooth_data == 'S'<span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
        flag = <span style="color: #005c5f;" class="mycode_color">1</span>;<br />
      <span style="color: #434f54;" class="mycode_color">}</span><br />
     <span style="color: #434f54;" class="mycode_color">}</span><br />
 <span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">Infrared_Remote_Control</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #00979d;" class="mycode_color">void</span><span style="color: #434f54;" class="mycode_color">)</span><span style="color: #95a5a6;" class="mycode_color">   //remote control，when pressing“#”，it quitting from the mode</span><br />
<span style="color: #434f54;" class="mycode_color">{</span>flag = <span style="color: #005c5f;" class="mycode_color">0</span>;<br />
  <span style="color: #728e00;" class="mycode_color">while</span> <span style="color: #434f54;" class="mycode_color">(</span>flag == <span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #434f54;" class="mycode_color">)</span> <br />
  <span style="color: #434f54;" class="mycode_color">{</span><br />
   <span style="color: #728e00;" class="mycode_color">if</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">irrecv</span>.<span style="color: #d35400;" class="mycode_color">decode</span><span style="color: #434f54;" class="mycode_color">(</span>&amp;results<span style="color: #434f54;" class="mycode_color">))</span><span style="color: #95a5a6;" class="mycode_color">  //to judge whether serial port receive data</span><br />
    <span style="color: #434f54;" class="mycode_color">{</span><br />
     Key = <span style="color: #d35400;" class="mycode_color">results</span>.<span style="color: #d35400;" class="mycode_color">value</span>;<br />
    <span style="color: #728e00;" class="mycode_color">switch</span><span style="color: #434f54;" class="mycode_color">(</span>Key<span style="color: #434f54;" class="mycode_color">)</span><br />
     <span style="color: #434f54;" class="mycode_color">{</span><br />
       <span style="color: #728e00;" class="mycode_color">case</span> IR_Go:<span style="color: #d35400;" class="mycode_color">advance</span><span style="color: #434f54;" class="mycode_color">()</span>;<span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">   //UP</span><br />
       <span style="color: #728e00;" class="mycode_color">break</span>;<br />
       <span style="color: #728e00;" class="mycode_color">case</span> IR_Back: <span style="color: #d35400;" class="mycode_color">back</span><span style="color: #434f54;" class="mycode_color">()</span>;<span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">   //back</span><br />
       <span style="color: #728e00;" class="mycode_color">break</span>;<br />
       <span style="color: #728e00;" class="mycode_color">case</span> IR_Left:<span style="color: #d35400;" class="mycode_color">turnL</span><span style="color: #434f54;" class="mycode_color">()</span>;<span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">   //Left    </span><br />
       <span style="color: #728e00;" class="mycode_color">break</span>;<br />
       <span style="color: #728e00;" class="mycode_color">case</span> IR_Right:<span style="color: #d35400;" class="mycode_color">turnR</span><span style="color: #434f54;" class="mycode_color">()</span>;<span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color"> //Righ</span><br />
       <span style="color: #728e00;" class="mycode_color">break</span>;<br />
       <span style="color: #728e00;" class="mycode_color">case</span> IR_Stop:<span style="color: #d35400;" class="mycode_color">stopp</span><span style="color: #434f54;" class="mycode_color">()</span>;<span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">   //stop</span><br />
       <span style="color: #728e00;" class="mycode_color">break</span>;<br />
       <span style="color: #728e00;" class="mycode_color">default</span>: <br />
       <span style="color: #728e00;" class="mycode_color">break</span>;      <br />
     <span style="color: #434f54;" class="mycode_color">}</span> <br />
     <span style="color: #d35400;" class="mycode_color">irrecv</span>.<span style="color: #d35400;" class="mycode_color">resume</span><span style="color: #434f54;" class="mycode_color">()</span>;<span style="color: #95a5a6;" class="mycode_color"> // Receive the next value</span><br />
    <span style="color: #434f54;" class="mycode_color">}</span><br />
    <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">Serial</span>.<span style="color: #d35400;" class="mycode_color">available</span><span style="color: #434f54;" class="mycode_color">())</span><br />
     <span style="color: #434f54;" class="mycode_color">{</span><br />
      bluetooth_data = <span style="color: #d35400;" class="mycode_color">Serial</span>.<span style="color: #d35400;" class="mycode_color">read</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
      <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span>bluetooth_data == 'S'<span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
        flag = <span style="color: #005c5f;" class="mycode_color">1</span>;<br />
      <span style="color: #434f54;" class="mycode_color">}</span><br />
     <span style="color: #434f54;" class="mycode_color">}</span><br />
     <br />
  <span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">setup</span><span style="color: #434f54;" class="mycode_color">()</span> <br />
<span style="color: #434f54;" class="mycode_color">{</span> <br />
   <span style="color: #d35400;" class="mycode_color">myservo</span>.<span style="color: #d35400;" class="mycode_color">attach</span><span style="color: #434f54;" class="mycode_color">(</span>A2<span style="color: #434f54;" class="mycode_color">)</span>;<br />
   <span style="color: #d35400;" class="mycode_color">M_Control_IO_config</span><span style="color: #434f54;" class="mycode_color">()</span>;<span style="color: #95a5a6;" class="mycode_color">     //motor controlling the initialization of IO</span><br />
   <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">  //setting initialized speed</span><br />
  <br />
   <span style="color: #d35400;" class="mycode_color">Sensor_IO_Config</span><span style="color: #434f54;" class="mycode_color">()</span>;<span style="color: #95a5a6;" class="mycode_color">            //initializing IO of line tracking module </span><br />
   <span style="color: #d35400;" class="mycode_color">irrecv</span>.<span style="color: #d35400;" class="mycode_color">enableIRIn</span><span style="color: #434f54;" class="mycode_color">()</span>;<span style="color: #95a5a6;" class="mycode_color">           //starting receiving IR remote control signal</span><br />
   <span style="color: #d35400;" class="mycode_color">Serial</span>.<span style="color: #d35400;" class="mycode_color">begin</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">9600</span><span style="color: #434f54;" class="mycode_color">)</span>;<span style="color: #95a5a6;" class="mycode_color">            //initialized serial port , using Bluetooth as serial port, setting baud </span><br />
   <span style="color: #d35400;" class="mycode_color">myservo</span>.<span style="color: #d35400;" class="mycode_color">write</span><span style="color: #434f54;" class="mycode_color">(</span>DuoJiao<span style="color: #434f54;" class="mycode_color">)</span>;<br />
   <span style="color: #d35400;" class="mycode_color">stopp</span><span style="color: #434f54;" class="mycode_color">()</span>;<span style="color: #95a5a6;" class="mycode_color">                       //stop</span><br />
   <span style="color: #d35400;" class="mycode_color">delay</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">1000</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
   DL = <span style="color: #005c5f;" class="mycode_color">0</span>;<br />
   DM = <span style="color: #005c5f;" class="mycode_color">0</span>;<br />
   DR = <span style="color: #005c5f;" class="mycode_color">0</span>;<br />
<span style="color: #434f54;" class="mycode_color">}</span> <br />
<span style="color: #00979d;" class="mycode_color">void</span> <span style="color: #d35400;" class="mycode_color">loop</span><span style="color: #434f54;" class="mycode_color">()</span> <br />
<span style="color: #434f54;" class="mycode_color">{</span>  <br />
  <span style="color: #728e00;" class="mycode_color">if</span> <span style="color: #434f54;" class="mycode_color">(</span><span style="color: #d35400;" class="mycode_color">Serial</span>.<span style="color: #d35400;" class="mycode_color">available</span><span style="color: #434f54;" class="mycode_color">())</span><br />
  <span style="color: #434f54;" class="mycode_color">{</span><br />
    bluetooth_data = <span style="color: #d35400;" class="mycode_color">Serial</span>.<span style="color: #d35400;" class="mycode_color">read</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #d35400;" class="mycode_color">Serial</span>.<span style="color: #d35400;" class="mycode_color">println</span><span style="color: #434f54;" class="mycode_color">(</span>bluetooth_data<span style="color: #434f54;" class="mycode_color">)</span>;<br />
  <span style="color: #434f54;" class="mycode_color">}</span><br />
  <span style="color: #728e00;" class="mycode_color">switch</span> <span style="color: #434f54;" class="mycode_color">(</span>bluetooth_data<span style="color: #434f54;" class="mycode_color">)</span> <span style="color: #434f54;" class="mycode_color">{</span><br />
    <span style="color: #728e00;" class="mycode_color">case</span> 'U':<br />
    <span style="color: #d35400;" class="mycode_color">advance</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
    <span style="color: #728e00;" class="mycode_color">break</span>;<br />
   <span style="color: #728e00;" class="mycode_color">case</span> 'D':<br />
    <span style="color: #d35400;" class="mycode_color">back</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
    <span style="color: #728e00;" class="mycode_color">break</span>;<br />
   <span style="color: #728e00;" class="mycode_color">case</span> 'L':<br />
    <span style="color: #d35400;" class="mycode_color">turnL</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
    <span style="color: #728e00;" class="mycode_color">break</span>;<br />
   <span style="color: #728e00;" class="mycode_color">case</span> 'R':<br />
    <span style="color: #d35400;" class="mycode_color">turnR</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">200</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
    <span style="color: #728e00;" class="mycode_color">break</span>;<br />
   <span style="color: #728e00;" class="mycode_color">case</span> 'S':<br />
    <span style="color: #d35400;" class="mycode_color">stopp</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #d35400;" class="mycode_color">Set_Speed</span><span style="color: #434f54;" class="mycode_color">(</span><span style="color: #005c5f;" class="mycode_color">0</span><span style="color: #434f54;" class="mycode_color">)</span>;<br />
    <span style="color: #728e00;" class="mycode_color">break</span>;<br />
   <span style="color: #728e00;" class="mycode_color">case</span> 'T':<br />
    <span style="color: #d35400;" class="mycode_color">stopp</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #d35400;" class="mycode_color">Line_Tracking</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #728e00;" class="mycode_color">break</span>;<br />
    <span style="color: #728e00;" class="mycode_color">case</span> 'O':<br />
    <span style="color: #d35400;" class="mycode_color">stopp</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #d35400;" class="mycode_color">Ultrasonic_Obstacle_Avoidance</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #728e00;" class="mycode_color">break</span>;<br />
    <span style="color: #728e00;" class="mycode_color">case</span> 'I':<br />
    <span style="color: #d35400;" class="mycode_color">stopp</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #d35400;" class="mycode_color">Infrared_Remote_Control</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #728e00;" class="mycode_color">break</span>;<br />
    <span style="color: #728e00;" class="mycode_color">case</span> 'G':<br />
    <span style="color: #d35400;" class="mycode_color">stopp</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #d35400;" class="mycode_color">Gravity_Sensor</span><span style="color: #434f54;" class="mycode_color">()</span>;<br />
    <span style="color: #728e00;" class="mycode_color">break</span>;<br />
    <span style="color: #728e00;" class="mycode_color">default</span>: <br />
    <span style="color: #728e00;" class="mycode_color">break</span>;<br />
  <span style="color: #434f54;" class="mycode_color">}</span><br />
<span style="color: #434f54;" class="mycode_color">}</span><br />
</span></span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Carro esquivador de objetos]]></title>
			<link>https://www.spainlabs.com/foros/showthread.php?tid=13894</link>
			<pubDate>Mon, 24 Jun 2024 02:45:38 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.spainlabs.com/foros/member.php?action=profile&uid=17341">Angela</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.spainlabs.com/foros/showthread.php?tid=13894</guid>
			<description><![CDATA[Buenas noches<br />
Alguien me podria ayudar con este codigo por favor, me sale EXIT STATUS 3<br />
<br />
#include &lt;Servo.h&gt;<br />
<br />
<br />
long Distancia;<br />
long Distancia_Frontal;<br />
long Distancia_Inferior=0;<br />
char Obstaculo[3];<br />
int PWM_MAXIMA = 100;<br />
int PWM_MINIMA = 80;<br />
<br />
Servo servoSonar;<br />
// definimos los pines del Sonar. Frontal<br />
const int Trig_Frontal= 12;<br />
const int Echo_Frontal= 18;<br />
// definimos los pines del Sonar. Inferior<br />
const int Trig_Inferior= 42;<br />
const int Echo_Inferior= 40;<br />
<br />
void setup() {<br />
<br />
  Serial.begin(9600);<br />
  // definimos salida y entrada del sonar Frontal<br />
  pinMode(11, OUTPUT);<br />
  pinMode(10, INPUT);<br />
  pinMode(13, OUTPUT);<br />
  digitalWrite(11, HIGH); // alimentación.<br />
  pinMode(Echo_Frontal, INPUT);<br />
  pinMode(Trig_Frontal, OUTPUT);<br />
  digitalWrite(Trig_Frontal, LOW);<br />
  pinMode(Echo_Inferior, INPUT);<br />
  pinMode(Trig_Inferior, OUTPUT);<br />
  digitalWrite(Trig_Inferior, LOW);<br />
<br />
        // Salidas PWM para el PuenteH <br />
      pinMode(2, OUTPUT);  // UP MotorL<br />
      pinMode(3, OUTPUT);  // DOWN MotorL <br />
      pinMode(4, OUTPUT);  // DOWN MotorR<br />
      pinMode(5, OUTPUT);  // UP MotorR<br />
      digitalWrite(2, LOW);<br />
      digitalWrite(3, LOW);<br />
      digitalWrite(4, LOW);<br />
      digitalWrite(5, LOW);<br />
<br />
  digitalWrite(13, HIGH);<br />
  servoSonar.attach(6);<br />
  delay(1000);<br />
  digitalWrite(13, LOW);<br />
  DetectarObstaculo();<br />
  delay(2000);<br />
  digitalWrite(13, HIGH);<br />
  servoSonar.write(90);<br />
  delay(1000);<br />
  digitalWrite(13, LOW);<br />
}<br />
<br />
void loop() {<br />
<br />
  Sonar(Trig_Inferior, Echo_Inferior);<br />
  Distancia_Inferior = Distancia;<br />
    <br />
<br />
  if (Distancia_Inferior &lt;=4){<br />
<br />
      // si no hay borde *********<br />
      Sonar(Trig_Frontal, Echo_Frontal);<br />
      Distancia_Frontal = Distancia;<br />
  //  Serial.println(Distancia_Frontal);<br />
<br />
      <br />
    <br />
      if (Distancia_Frontal &gt; 50){<br />
          MOVE_UP();<br />
      } else { if (Distancia_Frontal &gt; 20 &amp;&amp; Distancia_Frontal &lt;= 50){<br />
                    analogWrite(2, 0);<br />
                    analogWrite(3, map(Distancia_Frontal, 20, 50, PWM_MINIMA, PWM_MAXIMA));<br />
                    analogWrite(4, 0);<br />
                    analogWrite(5, map(Distancia_Frontal, 20, 50, PWM_MINIMA, PWM_MAXIMA));<br />
        } else {<br />
            // *************<br />
              digitalWrite(13, HIGH);<br />
            // prueba<br />
            MOVE_REV();<br />
            delay(500); <br />
            STOP();<br />
            delay(500);<br />
            MOVE_180();<br />
            //<br />
            STOP();<br />
            DetectarObstaculo();<br />
            delay(1000);<br />
<br />
            if (Obstaculo[0]=='0' &amp;&amp; Obstaculo[1]=='0' &amp;&amp; Obstaculo[2]=='0'){  // <br />
                MOVE_UP();<br />
            }<br />
            if (Obstaculo[0]=='0' &amp;&amp; Obstaculo[1]=='1' &amp;&amp; Obstaculo[2]=='0'){  // <br />
                STOP();<br />
                delay(500);<br />
                MOVE_RIGHT();<br />
                STOP();<br />
                delay(1000);<br />
            }<br />
            <br />
            <br />
            if (Obstaculo[0]=='0' &amp;&amp; Obstaculo[2]=='1'){  // obst Izquierda<br />
                MOVE_RIGHT();<br />
                STOP();<br />
                delay(1000);<br />
            }<br />
<br />
            if (Obstaculo[0]=='1' &amp;&amp; Obstaculo[2]=='0'){  // obst Derecha<br />
                MOVE_LEFT();<br />
                STOP();<br />
                delay(1000);<br />
            }<br />
<br />
            if (Obstaculo[0]=='1' &amp;&amp; Obstaculo[2]=='1'){  // obst Derecha<br />
                STOP();<br />
                delay(1000);<br />
                <br />
                while(Obstaculo[0]=='1' &amp;&amp; Obstaculo[2]=='1'){<br />
                MOVE_REV();<br />
                delay(500);<br />
                STOP();<br />
                DetectarObstaculo();<br />
                delay(1000);  <br />
                }<br />
                <br />
<br />
                if (Obstaculo[0]=='0'){<br />
                MOVE_RIGHT(); } else {<br />
                  MOVE_LEFT();<br />
                }<br />
                <br />
                delay(1000); <br />
            }<br />
              digitalWrite(13, LOW);<br />
            //**************<br />
        }<br />
        <br />
      }<br />
        <br />
      <br />
    //******************************<br />
  } else {<br />
      digitalWrite(13, HIGH);<br />
<br />
        <br />
      MOVE_FRENO();<br />
      //delay(100);<br />
      STOP(); <br />
      delay(1000);<br />
      MOVE_REV();<br />
      delay(500); <br />
      STOP();<br />
      delay(1000); <br />
      MOVE_180();<br />
      STOP();<br />
      delay(1000);<br />
        <br />
      <br />
      digitalWrite(13, LOW);<br />
    <br />
    }    <br />
<br />
    <br />
}  // fin loop<br />
<br />
<br />
<br />
  <br />
// Serial.println(Distancia_Frontal);<br />
// Serial.println(Distancia_Inferior);<br />
//DetectarObstaculo();<br />
  <br />
<br />
// funcion Calcular distancia *****************<br />
void Sonar(int Trig, int Echo){<br />
  digitalWrite(Trig, HIGH);<br />
  delayMicroseconds(10);<br />
  digitalWrite(Trig, LOW);<br />
  // retorna tiempo en microseg.<br />
  long tiempoEcho = pulseIn(Echo, HIGH,200000); <br />
  Distancia  = tiempoEcho *0.017;<br />
  delay(20); <br />
}<br />
<br />
// Movimientos del Robot.<br />
void MOVE_UP(){<br />
      analogWrite(2, 0);<br />
      analogWrite(3, PWM_MAXIMA);<br />
      analogWrite(4, 0);<br />
      analogWrite(5, PWM_MAXIMA);<br />
}<br />
<br />
void STOP(){<br />
      digitalWrite(2, LOW);<br />
      digitalWrite(3, LOW);<br />
      digitalWrite(4, LOW);<br />
      digitalWrite(5, LOW);<br />
}<br />
<br />
void MOVE_LEFT(){<br />
      analogWrite(2, 0);<br />
      analogWrite(3, PWM_MAXIMA);<br />
      analogWrite(4, PWM_MAXIMA);<br />
      analogWrite(5, 0);<br />
      delay(250);<br />
}<br />
<br />
void MOVE_RIGHT(){<br />
      analogWrite(2, PWM_MAXIMA);<br />
      analogWrite(3, 0);<br />
      analogWrite(4, 0);<br />
      analogWrite(5, PWM_MAXIMA);<br />
      delay(250);<br />
}<br />
<br />
void MOVE_180(){<br />
      analogWrite(2, PWM_MAXIMA);<br />
      analogWrite(3, 0);<br />
      analogWrite(4, 0);<br />
      analogWrite(5, PWM_MAXIMA);<br />
      delay(500);<br />
}<br />
<br />
void MOVE_REV(){<br />
      analogWrite(2, PWM_MAXIMA);<br />
      analogWrite(3, 0);<br />
      analogWrite(4, PWM_MAXIMA);<br />
      analogWrite(5, 0);    <br />
}<br />
void MOVE_FRENO(){<br />
      analogWrite(2, 255);<br />
      analogWrite(3, 0);<br />
      analogWrite(4, 255);<br />
      analogWrite(5, 0);<br />
      delay(100);<br />
      STOP();<br />
}<br />
<br />
//  Deteccion de obstaculos ***************<br />
<br />
void DetectarObstaculo(){<br />
  servoSonar.write(0);<br />
  delay(500);<br />
  Sonar(Trig_Frontal, Echo_Frontal);<br />
  Distancia_Frontal = Distancia;<br />
  if (Distancia_Frontal &lt;= 30){<br />
    Obstaculo[0]='1';<br />
  } else {<br />
    Obstaculo[0]='0';<br />
  }<br />
  servoSonar.write(90);<br />
  delay(500);<br />
  Sonar(Trig_Frontal, Echo_Frontal);<br />
  Distancia_Frontal = Distancia;<br />
  if (Distancia_Frontal &lt;= 20){<br />
    Obstaculo[1]='1';<br />
  } else {<br />
    Obstaculo[1]='0';<br />
  }<br />
  servoSonar.write(180);<br />
  delay(500);<br />
  Sonar(Trig_Frontal, Echo_Frontal);<br />
  Distancia_Frontal = Distancia;<br />
  if (Distancia_Frontal &lt;= 30){<br />
    Obstaculo[2]='1';<br />
  } else {<br />
    Obstaculo[2]='0';<br />
  }<br />
  servoSonar.write(90);<br />
  <br />
<br />
}]]></description>
			<content:encoded><![CDATA[Buenas noches<br />
Alguien me podria ayudar con este codigo por favor, me sale EXIT STATUS 3<br />
<br />
#include &lt;Servo.h&gt;<br />
<br />
<br />
long Distancia;<br />
long Distancia_Frontal;<br />
long Distancia_Inferior=0;<br />
char Obstaculo[3];<br />
int PWM_MAXIMA = 100;<br />
int PWM_MINIMA = 80;<br />
<br />
Servo servoSonar;<br />
// definimos los pines del Sonar. Frontal<br />
const int Trig_Frontal= 12;<br />
const int Echo_Frontal= 18;<br />
// definimos los pines del Sonar. Inferior<br />
const int Trig_Inferior= 42;<br />
const int Echo_Inferior= 40;<br />
<br />
void setup() {<br />
<br />
  Serial.begin(9600);<br />
  // definimos salida y entrada del sonar Frontal<br />
  pinMode(11, OUTPUT);<br />
  pinMode(10, INPUT);<br />
  pinMode(13, OUTPUT);<br />
  digitalWrite(11, HIGH); // alimentación.<br />
  pinMode(Echo_Frontal, INPUT);<br />
  pinMode(Trig_Frontal, OUTPUT);<br />
  digitalWrite(Trig_Frontal, LOW);<br />
  pinMode(Echo_Inferior, INPUT);<br />
  pinMode(Trig_Inferior, OUTPUT);<br />
  digitalWrite(Trig_Inferior, LOW);<br />
<br />
        // Salidas PWM para el PuenteH <br />
      pinMode(2, OUTPUT);  // UP MotorL<br />
      pinMode(3, OUTPUT);  // DOWN MotorL <br />
      pinMode(4, OUTPUT);  // DOWN MotorR<br />
      pinMode(5, OUTPUT);  // UP MotorR<br />
      digitalWrite(2, LOW);<br />
      digitalWrite(3, LOW);<br />
      digitalWrite(4, LOW);<br />
      digitalWrite(5, LOW);<br />
<br />
  digitalWrite(13, HIGH);<br />
  servoSonar.attach(6);<br />
  delay(1000);<br />
  digitalWrite(13, LOW);<br />
  DetectarObstaculo();<br />
  delay(2000);<br />
  digitalWrite(13, HIGH);<br />
  servoSonar.write(90);<br />
  delay(1000);<br />
  digitalWrite(13, LOW);<br />
}<br />
<br />
void loop() {<br />
<br />
  Sonar(Trig_Inferior, Echo_Inferior);<br />
  Distancia_Inferior = Distancia;<br />
    <br />
<br />
  if (Distancia_Inferior &lt;=4){<br />
<br />
      // si no hay borde *********<br />
      Sonar(Trig_Frontal, Echo_Frontal);<br />
      Distancia_Frontal = Distancia;<br />
  //  Serial.println(Distancia_Frontal);<br />
<br />
      <br />
    <br />
      if (Distancia_Frontal &gt; 50){<br />
          MOVE_UP();<br />
      } else { if (Distancia_Frontal &gt; 20 &amp;&amp; Distancia_Frontal &lt;= 50){<br />
                    analogWrite(2, 0);<br />
                    analogWrite(3, map(Distancia_Frontal, 20, 50, PWM_MINIMA, PWM_MAXIMA));<br />
                    analogWrite(4, 0);<br />
                    analogWrite(5, map(Distancia_Frontal, 20, 50, PWM_MINIMA, PWM_MAXIMA));<br />
        } else {<br />
            // *************<br />
              digitalWrite(13, HIGH);<br />
            // prueba<br />
            MOVE_REV();<br />
            delay(500); <br />
            STOP();<br />
            delay(500);<br />
            MOVE_180();<br />
            //<br />
            STOP();<br />
            DetectarObstaculo();<br />
            delay(1000);<br />
<br />
            if (Obstaculo[0]=='0' &amp;&amp; Obstaculo[1]=='0' &amp;&amp; Obstaculo[2]=='0'){  // <br />
                MOVE_UP();<br />
            }<br />
            if (Obstaculo[0]=='0' &amp;&amp; Obstaculo[1]=='1' &amp;&amp; Obstaculo[2]=='0'){  // <br />
                STOP();<br />
                delay(500);<br />
                MOVE_RIGHT();<br />
                STOP();<br />
                delay(1000);<br />
            }<br />
            <br />
            <br />
            if (Obstaculo[0]=='0' &amp;&amp; Obstaculo[2]=='1'){  // obst Izquierda<br />
                MOVE_RIGHT();<br />
                STOP();<br />
                delay(1000);<br />
            }<br />
<br />
            if (Obstaculo[0]=='1' &amp;&amp; Obstaculo[2]=='0'){  // obst Derecha<br />
                MOVE_LEFT();<br />
                STOP();<br />
                delay(1000);<br />
            }<br />
<br />
            if (Obstaculo[0]=='1' &amp;&amp; Obstaculo[2]=='1'){  // obst Derecha<br />
                STOP();<br />
                delay(1000);<br />
                <br />
                while(Obstaculo[0]=='1' &amp;&amp; Obstaculo[2]=='1'){<br />
                MOVE_REV();<br />
                delay(500);<br />
                STOP();<br />
                DetectarObstaculo();<br />
                delay(1000);  <br />
                }<br />
                <br />
<br />
                if (Obstaculo[0]=='0'){<br />
                MOVE_RIGHT(); } else {<br />
                  MOVE_LEFT();<br />
                }<br />
                <br />
                delay(1000); <br />
            }<br />
              digitalWrite(13, LOW);<br />
            //**************<br />
        }<br />
        <br />
      }<br />
        <br />
      <br />
    //******************************<br />
  } else {<br />
      digitalWrite(13, HIGH);<br />
<br />
        <br />
      MOVE_FRENO();<br />
      //delay(100);<br />
      STOP(); <br />
      delay(1000);<br />
      MOVE_REV();<br />
      delay(500); <br />
      STOP();<br />
      delay(1000); <br />
      MOVE_180();<br />
      STOP();<br />
      delay(1000);<br />
        <br />
      <br />
      digitalWrite(13, LOW);<br />
    <br />
    }    <br />
<br />
    <br />
}  // fin loop<br />
<br />
<br />
<br />
  <br />
// Serial.println(Distancia_Frontal);<br />
// Serial.println(Distancia_Inferior);<br />
//DetectarObstaculo();<br />
  <br />
<br />
// funcion Calcular distancia *****************<br />
void Sonar(int Trig, int Echo){<br />
  digitalWrite(Trig, HIGH);<br />
  delayMicroseconds(10);<br />
  digitalWrite(Trig, LOW);<br />
  // retorna tiempo en microseg.<br />
  long tiempoEcho = pulseIn(Echo, HIGH,200000); <br />
  Distancia  = tiempoEcho *0.017;<br />
  delay(20); <br />
}<br />
<br />
// Movimientos del Robot.<br />
void MOVE_UP(){<br />
      analogWrite(2, 0);<br />
      analogWrite(3, PWM_MAXIMA);<br />
      analogWrite(4, 0);<br />
      analogWrite(5, PWM_MAXIMA);<br />
}<br />
<br />
void STOP(){<br />
      digitalWrite(2, LOW);<br />
      digitalWrite(3, LOW);<br />
      digitalWrite(4, LOW);<br />
      digitalWrite(5, LOW);<br />
}<br />
<br />
void MOVE_LEFT(){<br />
      analogWrite(2, 0);<br />
      analogWrite(3, PWM_MAXIMA);<br />
      analogWrite(4, PWM_MAXIMA);<br />
      analogWrite(5, 0);<br />
      delay(250);<br />
}<br />
<br />
void MOVE_RIGHT(){<br />
      analogWrite(2, PWM_MAXIMA);<br />
      analogWrite(3, 0);<br />
      analogWrite(4, 0);<br />
      analogWrite(5, PWM_MAXIMA);<br />
      delay(250);<br />
}<br />
<br />
void MOVE_180(){<br />
      analogWrite(2, PWM_MAXIMA);<br />
      analogWrite(3, 0);<br />
      analogWrite(4, 0);<br />
      analogWrite(5, PWM_MAXIMA);<br />
      delay(500);<br />
}<br />
<br />
void MOVE_REV(){<br />
      analogWrite(2, PWM_MAXIMA);<br />
      analogWrite(3, 0);<br />
      analogWrite(4, PWM_MAXIMA);<br />
      analogWrite(5, 0);    <br />
}<br />
void MOVE_FRENO(){<br />
      analogWrite(2, 255);<br />
      analogWrite(3, 0);<br />
      analogWrite(4, 255);<br />
      analogWrite(5, 0);<br />
      delay(100);<br />
      STOP();<br />
}<br />
<br />
//  Deteccion de obstaculos ***************<br />
<br />
void DetectarObstaculo(){<br />
  servoSonar.write(0);<br />
  delay(500);<br />
  Sonar(Trig_Frontal, Echo_Frontal);<br />
  Distancia_Frontal = Distancia;<br />
  if (Distancia_Frontal &lt;= 30){<br />
    Obstaculo[0]='1';<br />
  } else {<br />
    Obstaculo[0]='0';<br />
  }<br />
  servoSonar.write(90);<br />
  delay(500);<br />
  Sonar(Trig_Frontal, Echo_Frontal);<br />
  Distancia_Frontal = Distancia;<br />
  if (Distancia_Frontal &lt;= 20){<br />
    Obstaculo[1]='1';<br />
  } else {<br />
    Obstaculo[1]='0';<br />
  }<br />
  servoSonar.write(180);<br />
  delay(500);<br />
  Sonar(Trig_Frontal, Echo_Frontal);<br />
  Distancia_Frontal = Distancia;<br />
  if (Distancia_Frontal &lt;= 30){<br />
    Obstaculo[2]='1';<br />
  } else {<br />
    Obstaculo[2]='0';<br />
  }<br />
  servoSonar.write(90);<br />
  <br />
<br />
}]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Alarma comunitaria con esp32]]></title>
			<link>https://www.spainlabs.com/foros/showthread.php?tid=13883</link>
			<pubDate>Mon, 10 Jun 2024 20:15:36 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.spainlabs.com/foros/member.php?action=profile&uid=15748">carsoto</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.spainlabs.com/foros/showthread.php?tid=13883</guid>
			<description><![CDATA[Hola amigos . estoy tratando de crear una alarma comuninarioa con un esp32 y pulsadores rf433 , investigando me di cuenta que cada boton genera un codigo propio de 24bit con el cual es facil individualizar cada boton que active la alarma y ademas asociar un usuario en particular identificando quien apreto el boton y necesita asistencia...<br />
Con la ayuda del chat gpt logre hacer la mayor parte (ya que no soy programador) y ademas me ayudo un programador de sistemas , pero lamentablemente ya no pude asistirme asi que quede a medias<br />
<br />
use el wifimanager para conectarme al wifi local y aloje una pagina web en el esp32 , se crearon los formularios de registros y ya puego detectar el boton transmisor y ademas hacer una ventana emergente por cada boton para introducir los datos del usuario (guardo todo en la flash del esp32 ) luego probe la API de whatsapp (callmeboot) y todo bien ..pero no se como vincular a los usuarios esa API , por lo cual necesito ayuda en este proyecto...<br />
Recuerden que no soy programador y ese es el problema..<br />
esta es la api , <a href="https://api.callmebot.com/whatsapp.php?phone=56964963xxx&amp;text=texto" target="_blank" rel="noopener" class="mycode_url">https://api.callmebot.com/whatsapp.php?p...text=texto</a> a enviar?&amp;apikey=98701xx<br />
eso lo probe en un esp32 y funciona sin problemas , pero devo incluirla en mi codigo y no tengo idea de como hacerlo<br />
Me imagino que devo usar algun tipo de variable para que al momento de detectar que un usuario registrado preciono el boton(transmisor) la Api de whatsapp tome los datos de la memoria y mande uno a uno de los usuarios registrados el mensaje de quien apreto el boton<br />
Eso es lo que me me falta y ya no se que hacer...<br />
<a href="https://ibb.co/PcS5FTP" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.ibb.co/StLK5QM/Sin-t-tulo.png" loading="lazy"  alt="[Imagen: Sin-t-tulo.png]" class="mycode_img" /></a><br />
<br />
<a href="https://ibb.co/pWhRZRW" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.ibb.co/28ZsPs8/serial.png" loading="lazy"  alt="[Imagen: serial.png]" class="mycode_img" /></a><br />
<br />
Agradeceria mucho la ayuda de alguien que conosca el tema y se ponga en contacto conmigo para compartir los codigos al +56993374453<br />
Manden un mensaje aludiendo que es por la alarma comunitaria y asi saber de que se trata , con esto de las estafas ya no contesto ningun mensaje si no se de donde viene]]></description>
			<content:encoded><![CDATA[Hola amigos . estoy tratando de crear una alarma comuninarioa con un esp32 y pulsadores rf433 , investigando me di cuenta que cada boton genera un codigo propio de 24bit con el cual es facil individualizar cada boton que active la alarma y ademas asociar un usuario en particular identificando quien apreto el boton y necesita asistencia...<br />
Con la ayuda del chat gpt logre hacer la mayor parte (ya que no soy programador) y ademas me ayudo un programador de sistemas , pero lamentablemente ya no pude asistirme asi que quede a medias<br />
<br />
use el wifimanager para conectarme al wifi local y aloje una pagina web en el esp32 , se crearon los formularios de registros y ya puego detectar el boton transmisor y ademas hacer una ventana emergente por cada boton para introducir los datos del usuario (guardo todo en la flash del esp32 ) luego probe la API de whatsapp (callmeboot) y todo bien ..pero no se como vincular a los usuarios esa API , por lo cual necesito ayuda en este proyecto...<br />
Recuerden que no soy programador y ese es el problema..<br />
esta es la api , <a href="https://api.callmebot.com/whatsapp.php?phone=56964963xxx&amp;text=texto" target="_blank" rel="noopener" class="mycode_url">https://api.callmebot.com/whatsapp.php?p...text=texto</a> a enviar?&amp;apikey=98701xx<br />
eso lo probe en un esp32 y funciona sin problemas , pero devo incluirla en mi codigo y no tengo idea de como hacerlo<br />
Me imagino que devo usar algun tipo de variable para que al momento de detectar que un usuario registrado preciono el boton(transmisor) la Api de whatsapp tome los datos de la memoria y mande uno a uno de los usuarios registrados el mensaje de quien apreto el boton<br />
Eso es lo que me me falta y ya no se que hacer...<br />
<a href="https://ibb.co/PcS5FTP" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.ibb.co/StLK5QM/Sin-t-tulo.png" loading="lazy"  alt="[Imagen: Sin-t-tulo.png]" class="mycode_img" /></a><br />
<br />
<a href="https://ibb.co/pWhRZRW" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.ibb.co/28ZsPs8/serial.png" loading="lazy"  alt="[Imagen: serial.png]" class="mycode_img" /></a><br />
<br />
Agradeceria mucho la ayuda de alguien que conosca el tema y se ponga en contacto conmigo para compartir los codigos al +56993374453<br />
Manden un mensaje aludiendo que es por la alarma comunitaria y asi saber de que se trata , con esto de las estafas ya no contesto ningun mensaje si no se de donde viene]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Proyecto Arbol]]></title>
			<link>https://www.spainlabs.com/foros/showthread.php?tid=13771</link>
			<pubDate>Sun, 10 Mar 2024 13:02:57 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.spainlabs.com/foros/member.php?action=profile&uid=17097">Nacchio</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.spainlabs.com/foros/showthread.php?tid=13771</guid>
			<description><![CDATA[Buenas tardes a todos.<br />
Acabo de empezar en el mundillo este de los proyectos con Arduino y ya me surgen pegas. Quiero hacer que un árbol caiga (mediante un servo), con sus rebotes y finalmente se pare. Posteriormente reiniciarlo mediante un pulsador.<br />
La primera parte la tengo lista y lo consigo. La segunda, el reinicio tengo más o menos como hacerlo, pero lo que no consigo es unir ambas partes.<br />
Alguien me puede ayudar con ideas? Gracias]]></description>
			<content:encoded><![CDATA[Buenas tardes a todos.<br />
Acabo de empezar en el mundillo este de los proyectos con Arduino y ya me surgen pegas. Quiero hacer que un árbol caiga (mediante un servo), con sus rebotes y finalmente se pare. Posteriormente reiniciarlo mediante un pulsador.<br />
La primera parte la tengo lista y lo consigo. La segunda, el reinicio tengo más o menos como hacerlo, pero lo que no consigo es unir ambas partes.<br />
Alguien me puede ayudar con ideas? Gracias]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Presentación y pregunta.  pantalla táctil STONE]]></title>
			<link>https://www.spainlabs.com/foros/showthread.php?tid=13635</link>
			<pubDate>Wed, 13 Dec 2023 12:39:53 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.spainlabs.com/foros/member.php?action=profile&uid=16914">JASO</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.spainlabs.com/foros/showthread.php?tid=13635</guid>
			<description><![CDATA[Buenos días a todos desde Guadalajara (España), soy informático jubilado y como la informática además de mi profesión siempre a sido una afición más, estoy dando mis primeros pasos en Arduino y es esta práctica me he encontrado con un problema.<br />
<br />
Tengo un arduino mega y una pantalla táctil STONE capacitativa de 3,5", me comunico con la pantalla por el puerto Serial1 y no tengo ningún problema para recibir datos de la pantalla de los códigos que envía la pantalla pero a la hora de enviar comandos a la pantalla, bien sea para cambiar de pantalla o presentar valores en campos o etiquetas de esa pantalla es cuando tengo problemas puesto que el comando mandado, si lo aplico en el simulador de la pantalla lo hace perfectamente, pero cuando lo hago por el puerto Serial1 no me hace ni caso.<br />
<br />
Para poder solucionar el problema resumí el programa a la mínima expresión (simplemente un comando para cambiar de pantalla) probé 3 sistemas, objeto json, con el comando en una variable y con el comando directamente con la sentencia Serial1.print o Serial1.println (he probado con los tres puertos serie (Serial2, Serial2 y Serial3) con el mismo resultado es decir ninguno, a continuación pego el código, por si alguien sabe decirme como solucionar el problema con el que me encuentro, seguramente debido a mi poca experiencia con el tema Arduino.<br />
<br />
<span style="color: #dae3e3;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font"><span style="color: #c586c0;" class="mycode_color">#include</span> <span style="color: #7fcbcd;" class="mycode_color">&lt;stone.h&gt;</span><br />
<span style="color: #c586c0;" class="mycode_color">#include</span> <span style="color: #7fcbcd;" class="mycode_color">&lt;ArduinoJson.hpp&gt;</span><br />
<span style="color: #c586c0;" class="mycode_color">#include</span> <span style="color: #7fcbcd;" class="mycode_color">&lt;ArduinoJson.h&gt;</span><br />
<span style="color: #c586c0;" class="mycode_color">#include</span> <span style="color: #7fcbcd;" class="mycode_color">&lt;SoftwareSerial.h&gt;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">/*</span><br />
<span style="color: #7f8c8d;" class="mycode_color">  ST&lt;{"cmd_code":"open_win","type":"window","widget":"clv4"}&gt;ET  </span><br />
<span style="color: #7f8c8d;" class="mycode_color">  este es el comando que debe llegar a la pantalla y probado en el simulador funciona</span><br />
<span style="color: #7f8c8d;" class="mycode_color">*/</span><br />
<span style="color: #0ca1a6;" class="mycode_color">void</span> <span style="color: #f39c12;" class="mycode_color">setup</span> ()<br />
{  <br />
  <span style="color: #f39c12;" class="mycode_color">Serial</span>.<span style="color: #f39c12;" class="mycode_color">begin</span>(<span style="color: #7fcbcd;" class="mycode_color">115200</span>);<span style="color: #7f8c8d;" class="mycode_color"> //para poder ver por el monitor serial que es lo que se manda a la pantalla</span><br />
  <span style="color: #f39c12;" class="mycode_color">Serial</span>.<span style="color: #f39c12;" class="mycode_color">println</span>(<span style="color: #7fcbcd;" class="mycode_color">"Mandando el comando a la pantalla"</span>);<br />
  <span style="color: #f39c12;" class="mycode_color">delay</span>(<span style="color: #7fcbcd;" class="mycode_color">200</span>);<br />
  <span style="color: #f39c12;" class="mycode_color">Serial1</span>.<span style="color: #f39c12;" class="mycode_color">begin</span>(<span style="color: #7fcbcd;" class="mycode_color">115200</span>);<span style="color: #7f8c8d;" class="mycode_color"> // puerto serie 1 para comunicar con la pantalla</span><br />
  <span style="color: #f39c12;" class="mycode_color">Serial1</span>.<span style="color: #f39c12;" class="mycode_color">flush</span>();<br />
  <span style="color: #f39c12;" class="mycode_color">SerializeObject</span>();<br />
 }<br />
<span style="color: #0ca1a6;" class="mycode_color">void</span> <span style="color: #f39c12;" class="mycode_color">loop</span>(){}<br />
<span style="color: #0ca1a6;" class="mycode_color">void</span> <span style="color: #f39c12;" class="mycode_color">SerializeObject</span>()<br />
{  <br />
  StaticJsonDocument&lt;<span style="color: #7fcbcd;" class="mycode_color">100</span>&gt; doc;<br />
  <span style="color: #f39c12;" class="mycode_color">doc</span>[<span style="color: #7fcbcd;" class="mycode_color">"cmd_code"</span>] = <span style="color: #7fcbcd;" class="mycode_color">"open_window"</span>;<br />
  <span style="color: #f39c12;" class="mycode_color">doc</span>[<span style="color: #7fcbcd;" class="mycode_color">"type"</span>] = <span style="color: #7fcbcd;" class="mycode_color">"window"</span>;<br />
  <span style="color: #f39c12;" class="mycode_color">doc</span>[<span style="color: #7fcbcd;" class="mycode_color">"widget"</span>] = <span style="color: #7fcbcd;" class="mycode_color">"clv4"</span>;<br />
<span style="color: #7f8c8d;" class="mycode_color">  // Enviar el comando a la pantalla</span><br />
  <span style="color: #f39c12;" class="mycode_color">Serial1</span>.<span style="color: #f39c12;" class="mycode_color">write</span>(<span style="color: #7fcbcd;" class="mycode_color">"ST&lt;"</span>);<br />
  <span style="color: #f39c12;" class="mycode_color">serializeJson</span>(doc, Serial1);<br />
  <span style="color: #f39c12;" class="mycode_color">Serial1</span>.<span style="color: #f39c12;" class="mycode_color">write</span>(<span style="color: #7fcbcd;" class="mycode_color">"&gt;ET\n"</span>);  <br />
<span style="color: #7f8c8d;" class="mycode_color">  // Enviar el comando al puerto monitor para saber que se a mandado a la pantalla</span><br />
  <span style="color: #f39c12;" class="mycode_color">Serial</span>.<span style="color: #f39c12;" class="mycode_color">write</span>(<span style="color: #7fcbcd;" class="mycode_color">"ST&lt;"</span>);<br />
  <span style="color: #f39c12;" class="mycode_color">serializeJson</span>(doc, Serial);<br />
  <span style="color: #f39c12;" class="mycode_color">Serial</span>.<span style="color: #f39c12;" class="mycode_color">write</span>(<span style="color: #7fcbcd;" class="mycode_color">"&gt;ET\n"</span>);  </span></span><br />
<span style="color: #dae3e3;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">}</span></span><br />
<br />
<span style="color: #7f8c8d;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">Y lo que aparece por el puerto mnitor al enviar el comando es:</span></span><span style="color: #dae3e3;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font"><br />
<span style="color: #7f8c8d;" class="mycode_color">ST&lt;{"cmd_code":"open_win","type":"window","widget":"clv4"}&gt;ET</span></span></span><br />
<span style="color: #dae3e3;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font"><span style="color: #7f8c8d;" class="mycode_color">Que es lo que debe llegar a la pantalla para cambiar a la pantalla clv4, pero no causa ningún efecto</span></span></span>]]></description>
			<content:encoded><![CDATA[Buenos días a todos desde Guadalajara (España), soy informático jubilado y como la informática además de mi profesión siempre a sido una afición más, estoy dando mis primeros pasos en Arduino y es esta práctica me he encontrado con un problema.<br />
<br />
Tengo un arduino mega y una pantalla táctil STONE capacitativa de 3,5", me comunico con la pantalla por el puerto Serial1 y no tengo ningún problema para recibir datos de la pantalla de los códigos que envía la pantalla pero a la hora de enviar comandos a la pantalla, bien sea para cambiar de pantalla o presentar valores en campos o etiquetas de esa pantalla es cuando tengo problemas puesto que el comando mandado, si lo aplico en el simulador de la pantalla lo hace perfectamente, pero cuando lo hago por el puerto Serial1 no me hace ni caso.<br />
<br />
Para poder solucionar el problema resumí el programa a la mínima expresión (simplemente un comando para cambiar de pantalla) probé 3 sistemas, objeto json, con el comando en una variable y con el comando directamente con la sentencia Serial1.print o Serial1.println (he probado con los tres puertos serie (Serial2, Serial2 y Serial3) con el mismo resultado es decir ninguno, a continuación pego el código, por si alguien sabe decirme como solucionar el problema con el que me encuentro, seguramente debido a mi poca experiencia con el tema Arduino.<br />
<br />
<span style="color: #dae3e3;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font"><span style="color: #c586c0;" class="mycode_color">#include</span> <span style="color: #7fcbcd;" class="mycode_color">&lt;stone.h&gt;</span><br />
<span style="color: #c586c0;" class="mycode_color">#include</span> <span style="color: #7fcbcd;" class="mycode_color">&lt;ArduinoJson.hpp&gt;</span><br />
<span style="color: #c586c0;" class="mycode_color">#include</span> <span style="color: #7fcbcd;" class="mycode_color">&lt;ArduinoJson.h&gt;</span><br />
<span style="color: #c586c0;" class="mycode_color">#include</span> <span style="color: #7fcbcd;" class="mycode_color">&lt;SoftwareSerial.h&gt;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">/*</span><br />
<span style="color: #7f8c8d;" class="mycode_color">  ST&lt;{"cmd_code":"open_win","type":"window","widget":"clv4"}&gt;ET  </span><br />
<span style="color: #7f8c8d;" class="mycode_color">  este es el comando que debe llegar a la pantalla y probado en el simulador funciona</span><br />
<span style="color: #7f8c8d;" class="mycode_color">*/</span><br />
<span style="color: #0ca1a6;" class="mycode_color">void</span> <span style="color: #f39c12;" class="mycode_color">setup</span> ()<br />
{  <br />
  <span style="color: #f39c12;" class="mycode_color">Serial</span>.<span style="color: #f39c12;" class="mycode_color">begin</span>(<span style="color: #7fcbcd;" class="mycode_color">115200</span>);<span style="color: #7f8c8d;" class="mycode_color"> //para poder ver por el monitor serial que es lo que se manda a la pantalla</span><br />
  <span style="color: #f39c12;" class="mycode_color">Serial</span>.<span style="color: #f39c12;" class="mycode_color">println</span>(<span style="color: #7fcbcd;" class="mycode_color">"Mandando el comando a la pantalla"</span>);<br />
  <span style="color: #f39c12;" class="mycode_color">delay</span>(<span style="color: #7fcbcd;" class="mycode_color">200</span>);<br />
  <span style="color: #f39c12;" class="mycode_color">Serial1</span>.<span style="color: #f39c12;" class="mycode_color">begin</span>(<span style="color: #7fcbcd;" class="mycode_color">115200</span>);<span style="color: #7f8c8d;" class="mycode_color"> // puerto serie 1 para comunicar con la pantalla</span><br />
  <span style="color: #f39c12;" class="mycode_color">Serial1</span>.<span style="color: #f39c12;" class="mycode_color">flush</span>();<br />
  <span style="color: #f39c12;" class="mycode_color">SerializeObject</span>();<br />
 }<br />
<span style="color: #0ca1a6;" class="mycode_color">void</span> <span style="color: #f39c12;" class="mycode_color">loop</span>(){}<br />
<span style="color: #0ca1a6;" class="mycode_color">void</span> <span style="color: #f39c12;" class="mycode_color">SerializeObject</span>()<br />
{  <br />
  StaticJsonDocument&lt;<span style="color: #7fcbcd;" class="mycode_color">100</span>&gt; doc;<br />
  <span style="color: #f39c12;" class="mycode_color">doc</span>[<span style="color: #7fcbcd;" class="mycode_color">"cmd_code"</span>] = <span style="color: #7fcbcd;" class="mycode_color">"open_window"</span>;<br />
  <span style="color: #f39c12;" class="mycode_color">doc</span>[<span style="color: #7fcbcd;" class="mycode_color">"type"</span>] = <span style="color: #7fcbcd;" class="mycode_color">"window"</span>;<br />
  <span style="color: #f39c12;" class="mycode_color">doc</span>[<span style="color: #7fcbcd;" class="mycode_color">"widget"</span>] = <span style="color: #7fcbcd;" class="mycode_color">"clv4"</span>;<br />
<span style="color: #7f8c8d;" class="mycode_color">  // Enviar el comando a la pantalla</span><br />
  <span style="color: #f39c12;" class="mycode_color">Serial1</span>.<span style="color: #f39c12;" class="mycode_color">write</span>(<span style="color: #7fcbcd;" class="mycode_color">"ST&lt;"</span>);<br />
  <span style="color: #f39c12;" class="mycode_color">serializeJson</span>(doc, Serial1);<br />
  <span style="color: #f39c12;" class="mycode_color">Serial1</span>.<span style="color: #f39c12;" class="mycode_color">write</span>(<span style="color: #7fcbcd;" class="mycode_color">"&gt;ET\n"</span>);  <br />
<span style="color: #7f8c8d;" class="mycode_color">  // Enviar el comando al puerto monitor para saber que se a mandado a la pantalla</span><br />
  <span style="color: #f39c12;" class="mycode_color">Serial</span>.<span style="color: #f39c12;" class="mycode_color">write</span>(<span style="color: #7fcbcd;" class="mycode_color">"ST&lt;"</span>);<br />
  <span style="color: #f39c12;" class="mycode_color">serializeJson</span>(doc, Serial);<br />
  <span style="color: #f39c12;" class="mycode_color">Serial</span>.<span style="color: #f39c12;" class="mycode_color">write</span>(<span style="color: #7fcbcd;" class="mycode_color">"&gt;ET\n"</span>);  </span></span><br />
<span style="color: #dae3e3;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">}</span></span><br />
<br />
<span style="color: #7f8c8d;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">Y lo que aparece por el puerto mnitor al enviar el comando es:</span></span><span style="color: #dae3e3;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font"><br />
<span style="color: #7f8c8d;" class="mycode_color">ST&lt;{"cmd_code":"open_win","type":"window","widget":"clv4"}&gt;ET</span></span></span><br />
<span style="color: #dae3e3;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font"><span style="color: #7f8c8d;" class="mycode_color">Que es lo que debe llegar a la pantalla para cambiar a la pantalla clv4, pero no causa ningún efecto</span></span></span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Error fatal en ESP32]]></title>
			<link>https://www.spainlabs.com/foros/showthread.php?tid=13574</link>
			<pubDate>Fri, 27 Oct 2023 01:19:41 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.spainlabs.com/foros/member.php?action=profile&uid=16795">Oscar Galicia</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.spainlabs.com/foros/showthread.php?tid=13574</guid>
			<description><![CDATA[Saludos, <br />
<br />
Soy nuevo en el foro y vengo desesperado a buscar ayuda porque me estoy quedando sin ideas.<br />
En mi trabajo tengo una máquina electromecánica, y quiero medir los tiempos de trabajo y paro de la máquina.<br />
<br />
Para esto, estoy usando un esp32 dev kit 1 con un shield que incluye los bornes para poder conectar cables.<br />
<br />
He conectado los contactos normal abiertos de 2 relays a GND (común proveniente de GND de la tarjeta) y a los GPIO 35 y 27.<br />
estas GPIO están configuradas como entradas PULLUP.<br />
<br />
Al detectar que los relay se activan o se desactivan, mando a una base de datos de hostinger el estado (marcha, paro o alarma), y luego descargo los datos.<br />
<br />
Mi problema es qué, mi ESP 32, empieza trabajando como se espera, pero al cabo de unas horas deja de responder. no reacciona a los relay.<br />
<br />
<br />
Aunque puede parecer que se queda en algún fallo por comunicación, el puerto serial deja de imprimir lo que está haciendo o envía una serie de caracteres que no he programado en algún baudrate que no he seteado y desconozco.<br />
me parece que no son fallas de conexión porque la falla sucede y un led que le he conectado me ha dejado ver que la salida GPIO 4 que está configurada como LOW, se pasa sola a un estado como si no estuviera configurada o definida.<br />
<br />
me da fallo subir el archivo con el código, así que lo pondré acá:<br />
<br />
<span style="color: #dae3e3;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font"><span style="color: #7f8c8d;" class="mycode_color">//Librerías de Wifi</span><br />
<span style="color: #c586c0;" class="mycode_color">#include</span> <span style="color: #7fcbcd;" class="mycode_color">&lt;WiFi.h&gt;</span><br />
<span style="color: #c586c0;" class="mycode_color">#include</span> <span style="color: #7fcbcd;" class="mycode_color">&lt;HTTPClient.h&gt;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">//Librerías y objeto para manejo de memoria eeprom</span><br />
<span style="color: #7f8c8d;" class="mycode_color">//#include &lt;Preferences.h&gt;      //Incluye la blioteca de EEPROM</span><br />
<span style="color: #7f8c8d;" class="mycode_color">//Preferences pref;  //inicia un objeto de memoria no volatil</span><br />
<span style="color: #7f8c8d;" class="mycode_color">/*</span><br />
<span style="color: #7f8c8d;" class="mycode_color">//Definir los hilos de multi tarea</span><br />
<span style="color: #7f8c8d;" class="mycode_color">TaskHandle_t FBTask;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">TaskHandle_t SQLTask;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">*/</span><br />
<span style="color: #7f8c8d;" class="mycode_color">//Server y credenciales de la base de datos</span><br />
<span style="color: #0ca1a6;" class="mycode_color">const</span> <span style="color: #0ca1a6;" class="mycode_color">char</span>* serverName = <span style="color: #7fcbcd;" class="mycode_color">"https://linkdemanejoyalmacenajededatos.php"</span>;<br />
String apiKeyValue = <span style="color: #7fcbcd;" class="mycode_color">"jfhdskls"</span>;<br />
String nodo = <span style="color: #7fcbcd;" class="mycode_color">"/nodonodo"</span>;<span style="color: #7f8c8d;" class="mycode_color">  //dirección del nodo dentro de la base</span><br />
<span style="color: #7f8c8d;" class="mycode_color">//Definir las variables del programa principal y app</span><br />
<span style="color: #0ca1a6;" class="mycode_color">bool</span> viSRUN = <span style="color: #7fcbcd;" class="mycode_color">false</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">bool</span> viALARM = <span style="color: #7fcbcd;" class="mycode_color">false</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">int</span> mSTAT = <span style="color: #7fcbcd;" class="mycode_color">10</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">int</span> INICIAR = <span style="color: #7fcbcd;" class="mycode_color">1</span>;<br />
<span style="color: #7f8c8d;" class="mycode_color">//Definir variables a enviar por el POST</span><br />
<span style="color: #0ca1a6;" class="mycode_color">int</span> RUN = <span style="color: #7fcbcd;" class="mycode_color">0</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">int</span> STOP = <span style="color: #7fcbcd;" class="mycode_color">0</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">int</span> ALARM = <span style="color: #7fcbcd;" class="mycode_color">0</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">int</span> COMANDO = <span style="color: #7fcbcd;" class="mycode_color">0</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">int</span> SENDDATA = <span style="color: #7fcbcd;" class="mycode_color">0</span>;<br />
String TALARM = <span style="color: #7fcbcd;" class="mycode_color">"INICIO"</span>;<br />
String USER = <span style="color: #7fcbcd;" class="mycode_color">""</span>;<br />
String PRODUCT = <span style="color: #7fcbcd;" class="mycode_color">""</span>;<br />
String SPAUSA = <span style="color: #7fcbcd;" class="mycode_color">""</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">int</span> COUNTP = <span style="color: #7fcbcd;" class="mycode_color">0</span>;<br />
<span style="color: #7f8c8d;" class="mycode_color">//Variables para reinicio de conexión en caso de fallas del wifi</span><br />
<span style="color: #0ca1a6;" class="mycode_color">bool</span> reenvio = <span style="color: #7fcbcd;" class="mycode_color">true</span>;<span style="color: #7f8c8d;" class="mycode_color">  //Variable para reenviar los datos http en caso de falla</span><br />
<span style="color: #0ca1a6;" class="mycode_color">int</span> concheck = <span style="color: #7fcbcd;" class="mycode_color">0</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">int</span> resetcon = <span style="color: #7fcbcd;" class="mycode_color">0</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">int</span> intentos = <span style="color: #7fcbcd;" class="mycode_color">0</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">bool</span> aok = <span style="color: #7fcbcd;" class="mycode_color">true</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">int</span> cuentare = <span style="color: #7fcbcd;" class="mycode_color">0</span>;<span style="color: #7f8c8d;" class="mycode_color">  //contador de fallas</span><br />
<span style="color: #7f8c8d;" class="mycode_color">//Define el objeto Servidor para recibir datos por WiFi</span><br />
WiFiServer <span style="color: #f39c12;" class="mycode_color">server</span>(<span style="color: #7fcbcd;" class="mycode_color">80</span>);<br />
String header;<br />
<span style="color: #7f8c8d;" class="mycode_color">//Variables para confirma de lectura de entradas</span><br />
<span style="color: #0ca1a6;" class="mycode_color">bool</span> iRun = <span style="color: #7fcbcd;" class="mycode_color">false</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">bool</span> iAlarm = <span style="color: #7fcbcd;" class="mycode_color">false</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">bool</span> tRun = <span style="color: #7fcbcd;" class="mycode_color">false</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">bool</span> tAlarm = <span style="color: #7fcbcd;" class="mycode_color">false</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">unsigned</span> <span style="color: #0ca1a6;" class="mycode_color">long</span> lastTime, timeout = <span style="color: #7fcbcd;" class="mycode_color">2000</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">unsigned</span> <span style="color: #0ca1a6;" class="mycode_color">long</span> tread = <span style="color: #7fcbcd;" class="mycode_color">1000</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">unsigned</span> <span style="color: #0ca1a6;" class="mycode_color">long</span> tr1 = <span style="color: #7fcbcd;" class="mycode_color">0</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">unsigned</span> <span style="color: #0ca1a6;" class="mycode_color">long</span> tr2 = <span style="color: #7fcbcd;" class="mycode_color">0</span>;<br />
<span style="color: #7f8c8d;" class="mycode_color">//*********Determinar los credenciales de conección a WIFI****************************//</span><br />
<span style="color: #0ca1a6;" class="mycode_color">const</span> <span style="color: #0ca1a6;" class="mycode_color">char</span>* ssid = <span style="color: #7fcbcd;" class="mycode_color">"wifi"</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">const</span> <span style="color: #0ca1a6;" class="mycode_color">char</span>* password = <span style="color: #7fcbcd;" class="mycode_color">"contraseña"</span>;</span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">void</span> <span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">conectarWiFi</span><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">() {</span></span><br />
<span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font"><span style="color: #000000;" class="mycode_color">  WiFi.begin(ssid, password);<br />
  while (WiFi.status() != WL_CONNECTED &amp;&amp; intentos &lt; 30) {<br />
    intentos++;<br />
    Serial.print("Intento de conexión número ");<br />
    Serial.print(intentos);<br />
    Serial.println("...");<br />
    delay(1000);<br />
  }<br />
  if (WiFi.status() == WL_CONNECTED) {<br />
    Serial.println("Conexión WiFi exitosa");<br />
    Serial.print("Dirección IP: ");<br />
    Serial.println(WiFi.localIP());<br />
    intentos = 0;<br />
  } else {<br />
    Serial.println("No se pudo conectar a la red WiFi");<br />
    ESP.restart();<br />
  }<br />
}<br />
void setup() {<br />
  //Setear el PINOUT<br />
  pinMode(2, OUTPUT);         //habilita el pin 4 como salida<br />
  pinMode(4, OUTPUT);         //habilita el pin 4 como salida<br />
  pinMode(14, OUTPUT);        //habilita el pin 14 como salida<br />
  pinMode(22, OUTPUT);        //habilita como Salida START<br />
  pinMode(23, OUTPUT);        //habilita como Salida STOP<br />
  pinMode(27, INPUT_PULLUP);  //habilita el pin 27 como entrada RUN<br />
  pinMode(26, INPUT_PULLUP);  //habilita el pin 26 como entrada  SENSOR<br />
  pinMode(35, INPUT_PULLUP);  //habilita el pin 35 como entrada  ALARMA<br />
  digitalWrite(4, LOW);       //Apaga el RS485<br />
  digitalWrite(14, LOW);      //0VDC<br />
  digitalWrite(22, HIGH);     //RELÉ DE RUN<br />
  digitalWrite(23, HIGH);     //RELÉ DE STOP<br />
  //Definimos los objetos Multitask<br />
  /*<br />
  xTaskCreatePinnedToCore(LFB, "Task1", 8000, NULL, 1, &amp;FBTask, 0);    // Core 0<br />
  xTaskCreatePinnedToCore(LSQL, "Task2", 8000, NULL, 1, &amp;SQLTask, 0);  // Core 0<br />
  */<br />
  //Serial.begin(9600);  //Inicia la comunicación Serial por el puerto COM<br />
  delay(1000);<br />
  Serial.println("Iniciando Wifi...");<br />
  //Llama la funcion de conexion wifi<br />
  conectarWiFi();<br />
  //inicia el objeto de servidor Wifi para leer los post desde la app<br />
  server.begin();<br />
  //Carga los datos de la EEPROM en ajustes de whatsapp<br />
  //pref.begin("WhaSettings", false);<br />
  INICIAR = 1;<br />
  TALARM = "INICIO";<br />
}<br />
void loop() {<br />
  if (INICIAR == 1) {<br />
    if (digitalRead(35) == HIGH) {<br />
      ALARM = 1;<br />
    }<br />
    if (digitalRead(27) == LOW) {<br />
      RUN = 1;<br />
    } else {<br />
      STOP = 1;<br />
    }<br />
    SENDDATA = 1;<br />
    delay(1000);<br />
    INICIAR = 0;<br />
  }<br />
  //Evaluacion si se solicitó enviar datos<br />
  if (SENDDATA == 1) {<br />
    enviodata();<br />
    Serial.println("Envio de data");<br />
  } else {<br />
    //En caso de no intentar enviar datos, se mantiene leyendo cambios de estado<br />
    //Rutina al iniciar el ESP32, manda un registro a la base de datos con el status actual y avisa que se acaba de iniciar el void loop<br />
    //Evaluación y filtrado de los pulsos o interferencias en las entradas del ESP32 (ALARMA)<br />
    if (digitalRead(35) == HIGH) {<br />
      if (tAlarm == false) {<br />
        tr1 = millis();<br />
        tAlarm = true;<br />
      } else {<br />
        if (millis() - tr1 &gt;= tread) {<br />
          iAlarm = true;<br />
        }<br />
      }<br />
    } else {<br />
      if (tAlarm == true) {<br />
        tr1 = millis();<br />
        tAlarm = false;<br />
      } else {<br />
        if (millis() - tr1 &gt;= tread) {<br />
          iAlarm = false;<br />
        }<br />
      }<br />
    }<br />
    //Evaluación y filtrado de los pulsos o interferencias en las entradas del ESP32 (RUN/STOP)<br />
    if (digitalRead(27) == LOW) {<br />
      if (tRun == false) {<br />
        tr2 = millis();<br />
        tRun = true;<br />
      } else {<br />
        if (millis() - tr2 &gt;= tread) {<br />
          iRun = true;<br />
        }<br />
      }<br />
    } else {<br />
      if (tRun == true) {<br />
        tr2 = millis();<br />
        tRun = false;<br />
      } else {<br />
        if (millis() - tr2 &gt;= tread) {<br />
          iRun = false;<br />
        }<br />
      }<br />
    }<br />
    //Rutina de checkeo de cambio de estados<br />
    if (iAlarm == true) {<br />
      if (ALARM == 0) {<br />
        ALARM = 1;<br />
        TALARM = "ALARMA";<br />
        SENDDATA = 1;<br />
      }<br />
      ALARM = 1;<br />
      mSTAT = 3;<br />
    }<br />
    if (iAlarm == false) {<br />
      if (ALARM == 1) {<br />
        ALARM = 0;<br />
        TALARM = "CONFIRMA ALARMA";<br />
        SENDDATA = 1;<br />
      }<br />
      ALARM = 0;<br />
      mSTAT = 4;<br />
    }<br />
    if (iRun == true) {<br />
      if (RUN == 0) {<br />
        RUN = 1;<br />
        STOP = 0;<br />
        TALARM = "RUN";<br />
        SENDDATA = 1;<br />
        Serial.println("MARCHA");<br />
      }<br />
      RUN = 1;<br />
      STOP = 0;<br />
      digitalWrite(2, HIGH);<br />
      mSTAT = 1;<br />
    }<br />
    if (iRun == false) {<br />
      if (RUN == 1) {<br />
        RUN = 0;<br />
        STOP = 1;<br />
        TALARM = "STOP";<br />
        SENDDATA = 1;<br />
        Serial.println("DETENIDA");<br />
      }<br />
      RUN = 0;<br />
      STOP = 1;<br />
      mSTAT = 2;<br />
      digitalWrite(2, LOW);<br />
    }<br />
  }</span><br />
<span style="color: #7f8c8d;" class="mycode_color">  /*</span><br />
<span style="color: #7f8c8d;" class="mycode_color">  WiFiClient client = server.available();</span><br />
<span style="color: #7f8c8d;" class="mycode_color">  if (client) {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    lastTime = millis();</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    Serial.println("Nuevo cliente");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    String currentLine = "";</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    while (client.connected() &amp;&amp; millis() - lastTime &lt;= timeout) {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">      if (client.available()) {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">        char c = client.read();</span><br />
<span style="color: #7f8c8d;" class="mycode_color">        Serial.write&copy;;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">        header += c;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">        if (c == '\n') {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          if (currentLine.length() == 0) {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            client.println("HTTP/1.1 200 OK");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            client.println("Content-type:text/html");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            client.println("Connection: close");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            client.println();</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            //pruebas, habrá que modificar esto</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            if (header.indexOf("GET /refresh") &gt;= 0) {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              client.println(mSTAT);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            } else {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              int start = header.indexOf("GET ") + 4;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              int end = header.indexOf("HTTP/1.1") - 1;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              String requestValue = header.substring(start, end);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              Serial.println("Request:");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              //Serial.println(requestValue);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              client.println(mSTAT);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              aok = false;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              char* token = strtok(requestValue.begin(), "&#36;");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              USER = token;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              token = strtok(NULL, "&#36;");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              USER = token;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              token = strtok(NULL, "&#36;");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              PRODUCT = token;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              token = strtok(NULL, "&#36;");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              String strtoint = token;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              COMANDO = strtoint.toInt();</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              token = strtok(NULL, "&#36;");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              SPAUSA = token;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              token = strtok(NULL, "&#36;");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            }</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            break;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          } else {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            currentLine = "";</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          }</span><br />
<span style="color: #7f8c8d;" class="mycode_color">        } else if (c != '\r') {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          currentLine += c;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">        }</span><br />
<span style="color: #7f8c8d;" class="mycode_color">      }</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    }</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    header = "";</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    client.stop();</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    Serial.println("Cliente desconectado.");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    Serial.println("");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    Serial.println("Valores extraídos:");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    </span><br />
<span style="color: #7f8c8d;" class="mycode_color">    //Serial.println(USER);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    //Serial.println(PRODUCT);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    </span><br />
<span style="color: #7f8c8d;" class="mycode_color">    Serial.println(COMANDO);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    if (aok == false) {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">      switch (COMANDO) {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">        case 1:</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          Serial.println("SOLICITUD DE RUN");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          viSRUN = true;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          viALARM = false;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          if (RUN != 1) {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            digitalWrite(22, LOW);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            digitalWrite(23, HIGH);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            TALARM = "CONFIRMA SEGURIDAD";</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            Serial.println("ON RELÉ RUN");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            aok == true;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          }</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          break;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">        case 2:</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          viSRUN = false;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          Serial.println("SOLICITUD DE STOP");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          if (STOP != 1) {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            digitalWrite(23, LOW);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            digitalWrite(22, HIGH);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            TALARM = "CONFIRMA SEGURIDAD";</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            Serial.println("ON RELÉ STOP");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            aok == true;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          }</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          break;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">        //Lectura de Comando Alarm</span><br />
<span style="color: #7f8c8d;" class="mycode_color">        case 3:</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          viALARM = true;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          viSRUN = false;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          if (TALARM != "ALARMA DESDE LA APP") {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            TALARM = "ALARMA DESDE LA APP";</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            digitalWrite(23, LOW);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            digitalWrite(22, HIGH);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            if (RUN == 0) {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              SENDDATA = 1;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            }</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            Serial.println("SET ALARM");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            aok == true;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          }</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          break;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">        case 5:</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          if (TALARM != SPAUSA) {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            viSRUN = false;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            Serial.println("SET " + SPAUSA);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            digitalWrite(23, LOW);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            digitalWrite(22, HIGH);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            TALARM = SPAUSA;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            SENDDATA = 1;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            </span><br />
<span style="color: #7f8c8d;" class="mycode_color">            aok == true;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          }</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          break;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">      }</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    }</span><br />
<span style="color: #7f8c8d;" class="mycode_color">  }</span><br />
<span style="color: #7f8c8d;" class="mycode_color">  //Evalua si el estado de de la maquina coincide con la solicitud de la app</span><br />
<span style="color: #7f8c8d;" class="mycode_color">  if ((viSRUN == true &amp;&amp; mSTAT == 1) || (viSRUN == false &amp;&amp; mSTAT == 2)) {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    //Si está en pide run y está en run deja las salidas inactivas</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    digitalWrite(23, HIGH);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    digitalWrite(22, HIGH);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    //Serial.println("RELÉS DESACTIVADOS");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    COMANDO = 10;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    //Serial.println("SOLICITUD DE LA APP RESUELTA");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">  }</span><br />
<span style="color: #7f8c8d;" class="mycode_color">*/</span><br />
<span style="color: #000000;" class="mycode_color">  delay(200);<br />
}<br />
void enviodata() {<br />
  //Si está habilitado el WiFi inicia el objeto HTTP<br />
  if (WiFi.status() == WL_CONNECTED) {<br />
    HTTPClient http;<br />
    http.begin(serverName);<br />
    http.addHeader("Content-Type", "application/x-www-form-urlencoded");<br />
    //Envia los datos recibidos a la base de datos<br />
    String httpRequestData = "api_key=" + apiKeyValue + "&amp;RUN=" + RUN + "&amp;STOP=" + STOP + "&amp;ALARM=" + ALARM + "&amp;TALARM=" + TALARM + "&amp;USER=" + USER + "&amp;PRODUCT=" + PRODUCT + "&amp;COUNTP=" + COUNTP + "";<br />
    Serial.print("httpRequestData: ");<br />
    Serial.println(httpRequestData);<br />
    int httpResponseCode = http.POST(httpRequestData);<br />
    //Codigo de verifiacion de la request<br />
    if (httpResponseCode &gt; 0) {<br />
      Serial.print("HTTP Response code: ");<br />
      Serial.println(httpResponseCode);<br />
      reenvio = false;<br />
      concheck = 0;<br />
      SENDDATA = 0;<br />
    } else {<br />
      reenvio = true;<br />
      Serial.print("Error code: ");<br />
      Serial.println(httpResponseCode);<br />
      concheck = concheck + 1;<br />
      Serial.println("Fallas de conexión: ");<br />
      Serial.println(concheck);<br />
      if (concheck &gt;= 20) {<br />
        Serial.println("Demasiadas fallas, reseteando conexión");<br />
        desconectarWiFi();<br />
        reconectarWiFi();<br />
      }<br />
      http.end();<br />
    }<br />
  } else {<br />
    Serial.println("WiFi Disconnected");<br />
    desconectarWiFi();<br />
    reconectarWiFi();<br />
    delay(500);<br />
  }<br />
}<br />
//Funcion para desconectar el wifi en caso de exeder errores<br />
void desconectarWiFi() {<br />
  WiFi.disconnect();<br />
  Serial.println("Desconectado de la red WiFi");<br />
}<br />
//Funcion para reconectar el wifi<br />
void reconectarWiFi() {<br />
  WiFi.reconnect();<br />
  Serial.println("Reconectando a la red WiFi...");<br />
  conectarWiFi();<br />
}</span><br />
<span style="color: #7f8c8d;" class="mycode_color">/*</span><br />
<span style="color: #7f8c8d;" class="mycode_color">void LFB(void* parameter) {  //</span><br />
<span style="color: #7f8c8d;" class="mycode_color">  while (1 == 1) {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    delay(1000);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">  }</span><br />
<span style="color: #7f8c8d;" class="mycode_color">}</span><br />
<span style="color: #7f8c8d;" class="mycode_color">void LSQL(void* parameter) {  //</span><br />
<span style="color: #7f8c8d;" class="mycode_color">  while (1 == 1) {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    if (SENDDATA == 1) {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">      enviodata();</span><br />
<span style="color: #7f8c8d;" class="mycode_color">      Serial.println("Envio por el core: " + xPortGetCoreID());</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    }</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    delay(200);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">  }</span><br />
<span style="color: #7f8c8d;" class="mycode_color">}</span><br />
<span style="color: #7f8c8d;" class="mycode_color">*/</span></span>]]></description>
			<content:encoded><![CDATA[Saludos, <br />
<br />
Soy nuevo en el foro y vengo desesperado a buscar ayuda porque me estoy quedando sin ideas.<br />
En mi trabajo tengo una máquina electromecánica, y quiero medir los tiempos de trabajo y paro de la máquina.<br />
<br />
Para esto, estoy usando un esp32 dev kit 1 con un shield que incluye los bornes para poder conectar cables.<br />
<br />
He conectado los contactos normal abiertos de 2 relays a GND (común proveniente de GND de la tarjeta) y a los GPIO 35 y 27.<br />
estas GPIO están configuradas como entradas PULLUP.<br />
<br />
Al detectar que los relay se activan o se desactivan, mando a una base de datos de hostinger el estado (marcha, paro o alarma), y luego descargo los datos.<br />
<br />
Mi problema es qué, mi ESP 32, empieza trabajando como se espera, pero al cabo de unas horas deja de responder. no reacciona a los relay.<br />
<br />
<br />
Aunque puede parecer que se queda en algún fallo por comunicación, el puerto serial deja de imprimir lo que está haciendo o envía una serie de caracteres que no he programado en algún baudrate que no he seteado y desconozco.<br />
me parece que no son fallas de conexión porque la falla sucede y un led que le he conectado me ha dejado ver que la salida GPIO 4 que está configurada como LOW, se pasa sola a un estado como si no estuviera configurada o definida.<br />
<br />
me da fallo subir el archivo con el código, así que lo pondré acá:<br />
<br />
<span style="color: #dae3e3;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font"><span style="color: #7f8c8d;" class="mycode_color">//Librerías de Wifi</span><br />
<span style="color: #c586c0;" class="mycode_color">#include</span> <span style="color: #7fcbcd;" class="mycode_color">&lt;WiFi.h&gt;</span><br />
<span style="color: #c586c0;" class="mycode_color">#include</span> <span style="color: #7fcbcd;" class="mycode_color">&lt;HTTPClient.h&gt;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">//Librerías y objeto para manejo de memoria eeprom</span><br />
<span style="color: #7f8c8d;" class="mycode_color">//#include &lt;Preferences.h&gt;      //Incluye la blioteca de EEPROM</span><br />
<span style="color: #7f8c8d;" class="mycode_color">//Preferences pref;  //inicia un objeto de memoria no volatil</span><br />
<span style="color: #7f8c8d;" class="mycode_color">/*</span><br />
<span style="color: #7f8c8d;" class="mycode_color">//Definir los hilos de multi tarea</span><br />
<span style="color: #7f8c8d;" class="mycode_color">TaskHandle_t FBTask;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">TaskHandle_t SQLTask;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">*/</span><br />
<span style="color: #7f8c8d;" class="mycode_color">//Server y credenciales de la base de datos</span><br />
<span style="color: #0ca1a6;" class="mycode_color">const</span> <span style="color: #0ca1a6;" class="mycode_color">char</span>* serverName = <span style="color: #7fcbcd;" class="mycode_color">"https://linkdemanejoyalmacenajededatos.php"</span>;<br />
String apiKeyValue = <span style="color: #7fcbcd;" class="mycode_color">"jfhdskls"</span>;<br />
String nodo = <span style="color: #7fcbcd;" class="mycode_color">"/nodonodo"</span>;<span style="color: #7f8c8d;" class="mycode_color">  //dirección del nodo dentro de la base</span><br />
<span style="color: #7f8c8d;" class="mycode_color">//Definir las variables del programa principal y app</span><br />
<span style="color: #0ca1a6;" class="mycode_color">bool</span> viSRUN = <span style="color: #7fcbcd;" class="mycode_color">false</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">bool</span> viALARM = <span style="color: #7fcbcd;" class="mycode_color">false</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">int</span> mSTAT = <span style="color: #7fcbcd;" class="mycode_color">10</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">int</span> INICIAR = <span style="color: #7fcbcd;" class="mycode_color">1</span>;<br />
<span style="color: #7f8c8d;" class="mycode_color">//Definir variables a enviar por el POST</span><br />
<span style="color: #0ca1a6;" class="mycode_color">int</span> RUN = <span style="color: #7fcbcd;" class="mycode_color">0</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">int</span> STOP = <span style="color: #7fcbcd;" class="mycode_color">0</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">int</span> ALARM = <span style="color: #7fcbcd;" class="mycode_color">0</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">int</span> COMANDO = <span style="color: #7fcbcd;" class="mycode_color">0</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">int</span> SENDDATA = <span style="color: #7fcbcd;" class="mycode_color">0</span>;<br />
String TALARM = <span style="color: #7fcbcd;" class="mycode_color">"INICIO"</span>;<br />
String USER = <span style="color: #7fcbcd;" class="mycode_color">""</span>;<br />
String PRODUCT = <span style="color: #7fcbcd;" class="mycode_color">""</span>;<br />
String SPAUSA = <span style="color: #7fcbcd;" class="mycode_color">""</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">int</span> COUNTP = <span style="color: #7fcbcd;" class="mycode_color">0</span>;<br />
<span style="color: #7f8c8d;" class="mycode_color">//Variables para reinicio de conexión en caso de fallas del wifi</span><br />
<span style="color: #0ca1a6;" class="mycode_color">bool</span> reenvio = <span style="color: #7fcbcd;" class="mycode_color">true</span>;<span style="color: #7f8c8d;" class="mycode_color">  //Variable para reenviar los datos http en caso de falla</span><br />
<span style="color: #0ca1a6;" class="mycode_color">int</span> concheck = <span style="color: #7fcbcd;" class="mycode_color">0</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">int</span> resetcon = <span style="color: #7fcbcd;" class="mycode_color">0</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">int</span> intentos = <span style="color: #7fcbcd;" class="mycode_color">0</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">bool</span> aok = <span style="color: #7fcbcd;" class="mycode_color">true</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">int</span> cuentare = <span style="color: #7fcbcd;" class="mycode_color">0</span>;<span style="color: #7f8c8d;" class="mycode_color">  //contador de fallas</span><br />
<span style="color: #7f8c8d;" class="mycode_color">//Define el objeto Servidor para recibir datos por WiFi</span><br />
WiFiServer <span style="color: #f39c12;" class="mycode_color">server</span>(<span style="color: #7fcbcd;" class="mycode_color">80</span>);<br />
String header;<br />
<span style="color: #7f8c8d;" class="mycode_color">//Variables para confirma de lectura de entradas</span><br />
<span style="color: #0ca1a6;" class="mycode_color">bool</span> iRun = <span style="color: #7fcbcd;" class="mycode_color">false</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">bool</span> iAlarm = <span style="color: #7fcbcd;" class="mycode_color">false</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">bool</span> tRun = <span style="color: #7fcbcd;" class="mycode_color">false</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">bool</span> tAlarm = <span style="color: #7fcbcd;" class="mycode_color">false</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">unsigned</span> <span style="color: #0ca1a6;" class="mycode_color">long</span> lastTime, timeout = <span style="color: #7fcbcd;" class="mycode_color">2000</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">unsigned</span> <span style="color: #0ca1a6;" class="mycode_color">long</span> tread = <span style="color: #7fcbcd;" class="mycode_color">1000</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">unsigned</span> <span style="color: #0ca1a6;" class="mycode_color">long</span> tr1 = <span style="color: #7fcbcd;" class="mycode_color">0</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">unsigned</span> <span style="color: #0ca1a6;" class="mycode_color">long</span> tr2 = <span style="color: #7fcbcd;" class="mycode_color">0</span>;<br />
<span style="color: #7f8c8d;" class="mycode_color">//*********Determinar los credenciales de conección a WIFI****************************//</span><br />
<span style="color: #0ca1a6;" class="mycode_color">const</span> <span style="color: #0ca1a6;" class="mycode_color">char</span>* ssid = <span style="color: #7fcbcd;" class="mycode_color">"wifi"</span>;<br />
<span style="color: #0ca1a6;" class="mycode_color">const</span> <span style="color: #0ca1a6;" class="mycode_color">char</span>* password = <span style="color: #7fcbcd;" class="mycode_color">"contraseña"</span>;</span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">void</span> <span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">conectarWiFi</span><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">() {</span></span><br />
<span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font"><span style="color: #000000;" class="mycode_color">  WiFi.begin(ssid, password);<br />
  while (WiFi.status() != WL_CONNECTED &amp;&amp; intentos &lt; 30) {<br />
    intentos++;<br />
    Serial.print("Intento de conexión número ");<br />
    Serial.print(intentos);<br />
    Serial.println("...");<br />
    delay(1000);<br />
  }<br />
  if (WiFi.status() == WL_CONNECTED) {<br />
    Serial.println("Conexión WiFi exitosa");<br />
    Serial.print("Dirección IP: ");<br />
    Serial.println(WiFi.localIP());<br />
    intentos = 0;<br />
  } else {<br />
    Serial.println("No se pudo conectar a la red WiFi");<br />
    ESP.restart();<br />
  }<br />
}<br />
void setup() {<br />
  //Setear el PINOUT<br />
  pinMode(2, OUTPUT);         //habilita el pin 4 como salida<br />
  pinMode(4, OUTPUT);         //habilita el pin 4 como salida<br />
  pinMode(14, OUTPUT);        //habilita el pin 14 como salida<br />
  pinMode(22, OUTPUT);        //habilita como Salida START<br />
  pinMode(23, OUTPUT);        //habilita como Salida STOP<br />
  pinMode(27, INPUT_PULLUP);  //habilita el pin 27 como entrada RUN<br />
  pinMode(26, INPUT_PULLUP);  //habilita el pin 26 como entrada  SENSOR<br />
  pinMode(35, INPUT_PULLUP);  //habilita el pin 35 como entrada  ALARMA<br />
  digitalWrite(4, LOW);       //Apaga el RS485<br />
  digitalWrite(14, LOW);      //0VDC<br />
  digitalWrite(22, HIGH);     //RELÉ DE RUN<br />
  digitalWrite(23, HIGH);     //RELÉ DE STOP<br />
  //Definimos los objetos Multitask<br />
  /*<br />
  xTaskCreatePinnedToCore(LFB, "Task1", 8000, NULL, 1, &amp;FBTask, 0);    // Core 0<br />
  xTaskCreatePinnedToCore(LSQL, "Task2", 8000, NULL, 1, &amp;SQLTask, 0);  // Core 0<br />
  */<br />
  //Serial.begin(9600);  //Inicia la comunicación Serial por el puerto COM<br />
  delay(1000);<br />
  Serial.println("Iniciando Wifi...");<br />
  //Llama la funcion de conexion wifi<br />
  conectarWiFi();<br />
  //inicia el objeto de servidor Wifi para leer los post desde la app<br />
  server.begin();<br />
  //Carga los datos de la EEPROM en ajustes de whatsapp<br />
  //pref.begin("WhaSettings", false);<br />
  INICIAR = 1;<br />
  TALARM = "INICIO";<br />
}<br />
void loop() {<br />
  if (INICIAR == 1) {<br />
    if (digitalRead(35) == HIGH) {<br />
      ALARM = 1;<br />
    }<br />
    if (digitalRead(27) == LOW) {<br />
      RUN = 1;<br />
    } else {<br />
      STOP = 1;<br />
    }<br />
    SENDDATA = 1;<br />
    delay(1000);<br />
    INICIAR = 0;<br />
  }<br />
  //Evaluacion si se solicitó enviar datos<br />
  if (SENDDATA == 1) {<br />
    enviodata();<br />
    Serial.println("Envio de data");<br />
  } else {<br />
    //En caso de no intentar enviar datos, se mantiene leyendo cambios de estado<br />
    //Rutina al iniciar el ESP32, manda un registro a la base de datos con el status actual y avisa que se acaba de iniciar el void loop<br />
    //Evaluación y filtrado de los pulsos o interferencias en las entradas del ESP32 (ALARMA)<br />
    if (digitalRead(35) == HIGH) {<br />
      if (tAlarm == false) {<br />
        tr1 = millis();<br />
        tAlarm = true;<br />
      } else {<br />
        if (millis() - tr1 &gt;= tread) {<br />
          iAlarm = true;<br />
        }<br />
      }<br />
    } else {<br />
      if (tAlarm == true) {<br />
        tr1 = millis();<br />
        tAlarm = false;<br />
      } else {<br />
        if (millis() - tr1 &gt;= tread) {<br />
          iAlarm = false;<br />
        }<br />
      }<br />
    }<br />
    //Evaluación y filtrado de los pulsos o interferencias en las entradas del ESP32 (RUN/STOP)<br />
    if (digitalRead(27) == LOW) {<br />
      if (tRun == false) {<br />
        tr2 = millis();<br />
        tRun = true;<br />
      } else {<br />
        if (millis() - tr2 &gt;= tread) {<br />
          iRun = true;<br />
        }<br />
      }<br />
    } else {<br />
      if (tRun == true) {<br />
        tr2 = millis();<br />
        tRun = false;<br />
      } else {<br />
        if (millis() - tr2 &gt;= tread) {<br />
          iRun = false;<br />
        }<br />
      }<br />
    }<br />
    //Rutina de checkeo de cambio de estados<br />
    if (iAlarm == true) {<br />
      if (ALARM == 0) {<br />
        ALARM = 1;<br />
        TALARM = "ALARMA";<br />
        SENDDATA = 1;<br />
      }<br />
      ALARM = 1;<br />
      mSTAT = 3;<br />
    }<br />
    if (iAlarm == false) {<br />
      if (ALARM == 1) {<br />
        ALARM = 0;<br />
        TALARM = "CONFIRMA ALARMA";<br />
        SENDDATA = 1;<br />
      }<br />
      ALARM = 0;<br />
      mSTAT = 4;<br />
    }<br />
    if (iRun == true) {<br />
      if (RUN == 0) {<br />
        RUN = 1;<br />
        STOP = 0;<br />
        TALARM = "RUN";<br />
        SENDDATA = 1;<br />
        Serial.println("MARCHA");<br />
      }<br />
      RUN = 1;<br />
      STOP = 0;<br />
      digitalWrite(2, HIGH);<br />
      mSTAT = 1;<br />
    }<br />
    if (iRun == false) {<br />
      if (RUN == 1) {<br />
        RUN = 0;<br />
        STOP = 1;<br />
        TALARM = "STOP";<br />
        SENDDATA = 1;<br />
        Serial.println("DETENIDA");<br />
      }<br />
      RUN = 0;<br />
      STOP = 1;<br />
      mSTAT = 2;<br />
      digitalWrite(2, LOW);<br />
    }<br />
  }</span><br />
<span style="color: #7f8c8d;" class="mycode_color">  /*</span><br />
<span style="color: #7f8c8d;" class="mycode_color">  WiFiClient client = server.available();</span><br />
<span style="color: #7f8c8d;" class="mycode_color">  if (client) {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    lastTime = millis();</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    Serial.println("Nuevo cliente");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    String currentLine = "";</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    while (client.connected() &amp;&amp; millis() - lastTime &lt;= timeout) {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">      if (client.available()) {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">        char c = client.read();</span><br />
<span style="color: #7f8c8d;" class="mycode_color">        Serial.write&copy;;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">        header += c;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">        if (c == '\n') {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          if (currentLine.length() == 0) {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            client.println("HTTP/1.1 200 OK");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            client.println("Content-type:text/html");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            client.println("Connection: close");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            client.println();</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            //pruebas, habrá que modificar esto</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            if (header.indexOf("GET /refresh") &gt;= 0) {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              client.println(mSTAT);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            } else {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              int start = header.indexOf("GET ") + 4;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              int end = header.indexOf("HTTP/1.1") - 1;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              String requestValue = header.substring(start, end);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              Serial.println("Request:");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              //Serial.println(requestValue);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              client.println(mSTAT);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              aok = false;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              char* token = strtok(requestValue.begin(), "&#36;");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              USER = token;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              token = strtok(NULL, "&#36;");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              USER = token;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              token = strtok(NULL, "&#36;");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              PRODUCT = token;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              token = strtok(NULL, "&#36;");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              String strtoint = token;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              COMANDO = strtoint.toInt();</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              token = strtok(NULL, "&#36;");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              SPAUSA = token;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              token = strtok(NULL, "&#36;");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            }</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            break;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          } else {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            currentLine = "";</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          }</span><br />
<span style="color: #7f8c8d;" class="mycode_color">        } else if (c != '\r') {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          currentLine += c;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">        }</span><br />
<span style="color: #7f8c8d;" class="mycode_color">      }</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    }</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    header = "";</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    client.stop();</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    Serial.println("Cliente desconectado.");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    Serial.println("");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    Serial.println("Valores extraídos:");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    </span><br />
<span style="color: #7f8c8d;" class="mycode_color">    //Serial.println(USER);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    //Serial.println(PRODUCT);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    </span><br />
<span style="color: #7f8c8d;" class="mycode_color">    Serial.println(COMANDO);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    if (aok == false) {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">      switch (COMANDO) {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">        case 1:</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          Serial.println("SOLICITUD DE RUN");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          viSRUN = true;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          viALARM = false;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          if (RUN != 1) {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            digitalWrite(22, LOW);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            digitalWrite(23, HIGH);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            TALARM = "CONFIRMA SEGURIDAD";</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            Serial.println("ON RELÉ RUN");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            aok == true;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          }</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          break;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">        case 2:</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          viSRUN = false;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          Serial.println("SOLICITUD DE STOP");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          if (STOP != 1) {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            digitalWrite(23, LOW);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            digitalWrite(22, HIGH);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            TALARM = "CONFIRMA SEGURIDAD";</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            Serial.println("ON RELÉ STOP");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            aok == true;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          }</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          break;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">        //Lectura de Comando Alarm</span><br />
<span style="color: #7f8c8d;" class="mycode_color">        case 3:</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          viALARM = true;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          viSRUN = false;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          if (TALARM != "ALARMA DESDE LA APP") {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            TALARM = "ALARMA DESDE LA APP";</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            digitalWrite(23, LOW);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            digitalWrite(22, HIGH);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            if (RUN == 0) {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">              SENDDATA = 1;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            }</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            Serial.println("SET ALARM");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            aok == true;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          }</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          break;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">        case 5:</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          if (TALARM != SPAUSA) {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            viSRUN = false;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            Serial.println("SET " + SPAUSA);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            digitalWrite(23, LOW);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            digitalWrite(22, HIGH);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            TALARM = SPAUSA;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            SENDDATA = 1;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">            </span><br />
<span style="color: #7f8c8d;" class="mycode_color">            aok == true;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          }</span><br />
<span style="color: #7f8c8d;" class="mycode_color">          break;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">      }</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    }</span><br />
<span style="color: #7f8c8d;" class="mycode_color">  }</span><br />
<span style="color: #7f8c8d;" class="mycode_color">  //Evalua si el estado de de la maquina coincide con la solicitud de la app</span><br />
<span style="color: #7f8c8d;" class="mycode_color">  if ((viSRUN == true &amp;&amp; mSTAT == 1) || (viSRUN == false &amp;&amp; mSTAT == 2)) {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    //Si está en pide run y está en run deja las salidas inactivas</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    digitalWrite(23, HIGH);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    digitalWrite(22, HIGH);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    //Serial.println("RELÉS DESACTIVADOS");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    COMANDO = 10;</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    //Serial.println("SOLICITUD DE LA APP RESUELTA");</span><br />
<span style="color: #7f8c8d;" class="mycode_color">  }</span><br />
<span style="color: #7f8c8d;" class="mycode_color">*/</span><br />
<span style="color: #000000;" class="mycode_color">  delay(200);<br />
}<br />
void enviodata() {<br />
  //Si está habilitado el WiFi inicia el objeto HTTP<br />
  if (WiFi.status() == WL_CONNECTED) {<br />
    HTTPClient http;<br />
    http.begin(serverName);<br />
    http.addHeader("Content-Type", "application/x-www-form-urlencoded");<br />
    //Envia los datos recibidos a la base de datos<br />
    String httpRequestData = "api_key=" + apiKeyValue + "&amp;RUN=" + RUN + "&amp;STOP=" + STOP + "&amp;ALARM=" + ALARM + "&amp;TALARM=" + TALARM + "&amp;USER=" + USER + "&amp;PRODUCT=" + PRODUCT + "&amp;COUNTP=" + COUNTP + "";<br />
    Serial.print("httpRequestData: ");<br />
    Serial.println(httpRequestData);<br />
    int httpResponseCode = http.POST(httpRequestData);<br />
    //Codigo de verifiacion de la request<br />
    if (httpResponseCode &gt; 0) {<br />
      Serial.print("HTTP Response code: ");<br />
      Serial.println(httpResponseCode);<br />
      reenvio = false;<br />
      concheck = 0;<br />
      SENDDATA = 0;<br />
    } else {<br />
      reenvio = true;<br />
      Serial.print("Error code: ");<br />
      Serial.println(httpResponseCode);<br />
      concheck = concheck + 1;<br />
      Serial.println("Fallas de conexión: ");<br />
      Serial.println(concheck);<br />
      if (concheck &gt;= 20) {<br />
        Serial.println("Demasiadas fallas, reseteando conexión");<br />
        desconectarWiFi();<br />
        reconectarWiFi();<br />
      }<br />
      http.end();<br />
    }<br />
  } else {<br />
    Serial.println("WiFi Disconnected");<br />
    desconectarWiFi();<br />
    reconectarWiFi();<br />
    delay(500);<br />
  }<br />
}<br />
//Funcion para desconectar el wifi en caso de exeder errores<br />
void desconectarWiFi() {<br />
  WiFi.disconnect();<br />
  Serial.println("Desconectado de la red WiFi");<br />
}<br />
//Funcion para reconectar el wifi<br />
void reconectarWiFi() {<br />
  WiFi.reconnect();<br />
  Serial.println("Reconectando a la red WiFi...");<br />
  conectarWiFi();<br />
}</span><br />
<span style="color: #7f8c8d;" class="mycode_color">/*</span><br />
<span style="color: #7f8c8d;" class="mycode_color">void LFB(void* parameter) {  //</span><br />
<span style="color: #7f8c8d;" class="mycode_color">  while (1 == 1) {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    delay(1000);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">  }</span><br />
<span style="color: #7f8c8d;" class="mycode_color">}</span><br />
<span style="color: #7f8c8d;" class="mycode_color">void LSQL(void* parameter) {  //</span><br />
<span style="color: #7f8c8d;" class="mycode_color">  while (1 == 1) {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    if (SENDDATA == 1) {</span><br />
<span style="color: #7f8c8d;" class="mycode_color">      enviodata();</span><br />
<span style="color: #7f8c8d;" class="mycode_color">      Serial.println("Envio por el core: " + xPortGetCoreID());</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    }</span><br />
<span style="color: #7f8c8d;" class="mycode_color">    delay(200);</span><br />
<span style="color: #7f8c8d;" class="mycode_color">  }</span><br />
<span style="color: #7f8c8d;" class="mycode_color">}</span><br />
<span style="color: #7f8c8d;" class="mycode_color">*/</span></span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[arduino uno + GPS + SD + SDS011]]></title>
			<link>https://www.spainlabs.com/foros/showthread.php?tid=13480</link>
			<pubDate>Tue, 18 Jul 2023 20:55:36 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.spainlabs.com/foros/member.php?action=profile&uid=16644">JRRAmirez</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.spainlabs.com/foros/showthread.php?tid=13480</guid>
			<description><![CDATA[Hola a todos tengo unas dudas, estoy realizando un proyecto donde debo capturar partículas de un sensro de particulas, junto con los datos de longitud y latitud de un modulo GPS  y guardarlos en una microSD en un archivo CSV, todo esto en arduino uno, <br />
el inconveniente que tengo es que no logro mostrar los datos del GPS y tampoco guardarlos, pero si me guarda los del sensor en el archivo CSV. en monitor serial me muestra los datos  <br />
<br />
dejo el código, si saben que puede ser les agradezco muchisimo, todos esta alimentados  a los pines de  5v del arduino uno.<br />
 <br />
<span style="font-weight: bold;" class="mycode_b">Modulo Gps Neo-6m</span><br />
<span style="font-weight: bold;" class="mycode_b">Sensor de particulas  SDS011 NOVA PM</span><br />
<span style="font-weight: bold;" class="mycode_b">Lector grabador de tarjeta SD</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">#include &lt;SoftwareSerial.h&gt;</span><br />
<span style="font-weight: bold;" class="mycode_b">#include &lt;TinyGPS++.h&gt;</span><br />
<span style="font-weight: bold;" class="mycode_b">#include &lt;SD.h&gt;</span><br />
<span style="font-weight: bold;" class="mycode_b">#include &lt;SDS011.h&gt;</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">// Configuración del módulo SD</span><br />
<span style="font-weight: bold;" class="mycode_b">const int chipSelect = 10; // Pin CS del módulo SD</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">// Configuración del módulo GPS</span><br />
<span style="font-weight: bold;" class="mycode_b">TinyGPSPlus gps;</span><br />
<span style="font-weight: bold;" class="mycode_b">SoftwareSerial ss(0, 1); // Se utiliza el pin 4 como RX y el pin 3 como TX</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">// Configuración del sensor de partículas SDS011</span><br />
<span style="font-weight: bold;" class="mycode_b">SDS011 sds;</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">File dataFile; // Variable para el archivo de datos</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">unsigned long previousTime = 0; // Variable para almacenar el tiempo anterior</span><br />
<span style="font-weight: bold;" class="mycode_b">unsigned long interval = 10000; // Intervalo de tiempo en milisegundos (10 segundos)</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">void setup()</span><br />
<span style="font-weight: bold;" class="mycode_b">{</span><br />
<span style="font-weight: bold;" class="mycode_b">  Serial.begin(115200);</span><br />
<span style="font-weight: bold;" class="mycode_b">  ss.begin(9600);</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">  // Inicializar la tarjeta SD</span><br />
<span style="font-weight: bold;" class="mycode_b">  if (!SD.begin(chipSelect))</span><br />
<span style="font-weight: bold;" class="mycode_b">  {</span><br />
<span style="font-weight: bold;" class="mycode_b">    Serial.println("Error al inicializar la tarjeta SD.");</span><br />
<span style="font-weight: bold;" class="mycode_b">    return;</span><br />
<span style="font-weight: bold;" class="mycode_b">  }</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">  // Inicializar el sensor de partículas SDS011</span><br />
<span style="font-weight: bold;" class="mycode_b">  sds.begin(6, 7); // Pines 6 (RX) y 7 (TX)</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">  Serial.print("Datos de sensor particulas V 1.0 ");</span><br />
<span style="font-weight: bold;" class="mycode_b">  Serial.println();</span><br />
<span style="font-weight: bold;" class="mycode_b">}</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">void loop()</span><br />
<span style="font-weight: bold;" class="mycode_b">{</span><br />
<span style="font-weight: bold;" class="mycode_b">  bool newDataGPS = false;</span><br />
<span style="font-weight: bold;" class="mycode_b">  bool newDataSDS = false;</span><br />
<span style="font-weight: bold;" class="mycode_b">  unsigned long chars;</span><br />
<span style="font-weight: bold;" class="mycode_b">  unsigned short sentences, failed;</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">  // Obtener el tiempo actual</span><br />
<span style="font-weight: bold;" class="mycode_b">  unsigned long currentTime = millis();</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">  // Verificar si ha pasado el intervalo de tiempo deseado</span><br />
<span style="font-weight: bold;" class="mycode_b">  if (currentTime - previousTime &gt;= interval)</span><br />
<span style="font-weight: bold;" class="mycode_b">  {</span><br />
<span style="font-weight: bold;" class="mycode_b">    previousTime = currentTime; // Actualizar el tiempo anterior</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">    // Leer datos del sensor de partículas SDS011</span><br />
<span style="font-weight: bold;" class="mycode_b">    float pm25, pm10;</span><br />
<span style="font-weight: bold;" class="mycode_b">    if (sds.read(&amp;pm25, &amp;pm10))</span><br />
<span style="font-weight: bold;" class="mycode_b">    {</span><br />
<span style="font-weight: bold;" class="mycode_b">      newDataSDS = true;</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">      // Abrir el archivo en modo escritura y añadir datos al final</span><br />
<span style="font-weight: bold;" class="mycode_b">      dataFile = SD.open("data.csv", FILE_WRITE);</span><br />
<span style="font-weight: bold;" class="mycode_b">      if (dataFile)</span><br />
<span style="font-weight: bold;" class="mycode_b">      {</span><br />
<span style="font-weight: bold;" class="mycode_b">        // Escribir los datos en el archivo CSV</span><br />
<span style="font-weight: bold;" class="mycode_b">        float latitude = gps.location.lat();</span><br />
<span style="font-weight: bold;" class="mycode_b">        float longitude = gps.location.lng();</span><br />
<span style="font-weight: bold;" class="mycode_b">        dataFile.print(latitude, 6);</span><br />
<span style="font-weight: bold;" class="mycode_b">        dataFile.print(",");</span><br />
<span style="font-weight: bold;" class="mycode_b">        dataFile.print(longitude, 6);</span><br />
<span style="font-weight: bold;" class="mycode_b">        dataFile.print(",");</span><br />
<span style="font-weight: bold;" class="mycode_b">        dataFile.print(gps.satellites.value());</span><br />
<span style="font-weight: bold;" class="mycode_b">        dataFile.print(",");</span><br />
<span style="font-weight: bold;" class="mycode_b">        dataFile.print(gps.hdop.value());</span><br />
<span style="font-weight: bold;" class="mycode_b">        dataFile.print(",");</span><br />
<span style="font-weight: bold;" class="mycode_b">        dataFile.print(pm25);</span><br />
<span style="font-weight: bold;" class="mycode_b">        dataFile.print(",");</span><br />
<span style="font-weight: bold;" class="mycode_b">        dataFile.println(pm10);</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">        // Cerrar el archivo</span><br />
<span style="font-weight: bold;" class="mycode_b">        dataFile.close();</span><br />
<span style="font-weight: bold;" class="mycode_b">      }</span><br />
<span style="font-weight: bold;" class="mycode_b">      else</span><br />
<span style="font-weight: bold;" class="mycode_b">      {</span><br />
<span style="font-weight: bold;" class="mycode_b">        Serial.println("Error al abrir el archivo.");</span><br />
<span style="font-weight: bold;" class="mycode_b">      }</span><br />
<span style="font-weight: bold;" class="mycode_b">    }</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">    // Imprimir los datos en el Monitor Serie</span><br />
<span style="font-weight: bold;" class="mycode_b">    if (newDataGPS)</span><br />
<span style="font-weight: bold;" class="mycode_b">    {</span><br />
<span style="font-weight: bold;" class="mycode_b">      Serial.print("LAT=");</span><br />
<span style="font-weight: bold;" class="mycode_b">      Serial.print(gps.location.lat(), 6);</span><br />
<span style="font-weight: bold;" class="mycode_b">      Serial.print(" LON=");</span><br />
<span style="font-weight: bold;" class="mycode_b">      Serial.print(gps.location.lng(), 6);</span><br />
<span style="font-weight: bold;" class="mycode_b">      Serial.println();</span><br />
<span style="font-weight: bold;" class="mycode_b">    }</span><br />
<span style="font-weight: bold;" class="mycode_b">    else</span><br />
<span style="font-weight: bold;" class="mycode_b">    {</span><br />
<span style="font-weight: bold;" class="mycode_b">      Serial.println(" No se recibieron caracteres del GPS: revisa la conexión ");</span><br />
<span style="font-weight: bold;" class="mycode_b">    }</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">    if (newDataSDS)</span><br />
<span style="font-weight: bold;" class="mycode_b">    {</span><br />
<span style="font-weight: bold;" class="mycode_b">      Serial.print("PM2.5=");</span><br />
<span style="font-weight: bold;" class="mycode_b">      Serial.print(pm25);</span><br />
<span style="font-weight: bold;" class="mycode_b">      Serial.print(" PM10=");</span><br />
<span style="font-weight: bold;" class="mycode_b">      Serial.print(pm10);</span><br />
<span style="font-weight: bold;" class="mycode_b">      Serial.println();</span><br />
<span style="font-weight: bold;" class="mycode_b">    }</span><br />
<span style="font-weight: bold;" class="mycode_b">    else</span><br />
<span style="font-weight: bold;" class="mycode_b">    {</span><br />
<span style="font-weight: bold;" class="mycode_b">      Serial.println(" No se recibieron datos del sensor de partículas: revisa la conexión ");</span><br />
<span style="font-weight: bold;" class="mycode_b">    }</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">    // Ajustar el intervalo de tiempo si el usuario lo desea</span><br />
<span style="font-weight: bold;" class="mycode_b">    if (Serial.available() &gt; 0)</span><br />
<span style="font-weight: bold;" class="mycode_b">    {</span><br />
<span style="font-weight: bold;" class="mycode_b">      interval = Serial.parseInt();</span><br />
<span style="font-weight: bold;" class="mycode_b">    }</span><br />
<span style="font-weight: bold;" class="mycode_b">  }</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">  // Para parsear los datos del GPS durante un segundo</span><br />
<span style="font-weight: bold;" class="mycode_b">  while (ss.available())</span><br />
<span style="font-weight: bold;" class="mycode_b">  {</span><br />
<span style="font-weight: bold;" class="mycode_b">    char c = ss.read();</span><br />
<span style="font-weight: bold;" class="mycode_b">    Serial.write&copy;; // Descomenta esta línea si quieres ver los datos del GPS en el Monitor Serie</span><br />
<span style="font-weight: bold;" class="mycode_b">    if (gps.encode&copy;) // ¿Se recibió una nueva sentencia válida?</span><br />
<span style="font-weight: bold;" class="mycode_b">      newDataGPS = true;</span><br />
<span style="font-weight: bold;" class="mycode_b">  }</span><br />
<span style="font-weight: bold;" class="mycode_b">}</span>]]></description>
			<content:encoded><![CDATA[Hola a todos tengo unas dudas, estoy realizando un proyecto donde debo capturar partículas de un sensro de particulas, junto con los datos de longitud y latitud de un modulo GPS  y guardarlos en una microSD en un archivo CSV, todo esto en arduino uno, <br />
el inconveniente que tengo es que no logro mostrar los datos del GPS y tampoco guardarlos, pero si me guarda los del sensor en el archivo CSV. en monitor serial me muestra los datos  <br />
<br />
dejo el código, si saben que puede ser les agradezco muchisimo, todos esta alimentados  a los pines de  5v del arduino uno.<br />
 <br />
<span style="font-weight: bold;" class="mycode_b">Modulo Gps Neo-6m</span><br />
<span style="font-weight: bold;" class="mycode_b">Sensor de particulas  SDS011 NOVA PM</span><br />
<span style="font-weight: bold;" class="mycode_b">Lector grabador de tarjeta SD</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">#include &lt;SoftwareSerial.h&gt;</span><br />
<span style="font-weight: bold;" class="mycode_b">#include &lt;TinyGPS++.h&gt;</span><br />
<span style="font-weight: bold;" class="mycode_b">#include &lt;SD.h&gt;</span><br />
<span style="font-weight: bold;" class="mycode_b">#include &lt;SDS011.h&gt;</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">// Configuración del módulo SD</span><br />
<span style="font-weight: bold;" class="mycode_b">const int chipSelect = 10; // Pin CS del módulo SD</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">// Configuración del módulo GPS</span><br />
<span style="font-weight: bold;" class="mycode_b">TinyGPSPlus gps;</span><br />
<span style="font-weight: bold;" class="mycode_b">SoftwareSerial ss(0, 1); // Se utiliza el pin 4 como RX y el pin 3 como TX</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">// Configuración del sensor de partículas SDS011</span><br />
<span style="font-weight: bold;" class="mycode_b">SDS011 sds;</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">File dataFile; // Variable para el archivo de datos</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">unsigned long previousTime = 0; // Variable para almacenar el tiempo anterior</span><br />
<span style="font-weight: bold;" class="mycode_b">unsigned long interval = 10000; // Intervalo de tiempo en milisegundos (10 segundos)</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">void setup()</span><br />
<span style="font-weight: bold;" class="mycode_b">{</span><br />
<span style="font-weight: bold;" class="mycode_b">  Serial.begin(115200);</span><br />
<span style="font-weight: bold;" class="mycode_b">  ss.begin(9600);</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">  // Inicializar la tarjeta SD</span><br />
<span style="font-weight: bold;" class="mycode_b">  if (!SD.begin(chipSelect))</span><br />
<span style="font-weight: bold;" class="mycode_b">  {</span><br />
<span style="font-weight: bold;" class="mycode_b">    Serial.println("Error al inicializar la tarjeta SD.");</span><br />
<span style="font-weight: bold;" class="mycode_b">    return;</span><br />
<span style="font-weight: bold;" class="mycode_b">  }</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">  // Inicializar el sensor de partículas SDS011</span><br />
<span style="font-weight: bold;" class="mycode_b">  sds.begin(6, 7); // Pines 6 (RX) y 7 (TX)</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">  Serial.print("Datos de sensor particulas V 1.0 ");</span><br />
<span style="font-weight: bold;" class="mycode_b">  Serial.println();</span><br />
<span style="font-weight: bold;" class="mycode_b">}</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">void loop()</span><br />
<span style="font-weight: bold;" class="mycode_b">{</span><br />
<span style="font-weight: bold;" class="mycode_b">  bool newDataGPS = false;</span><br />
<span style="font-weight: bold;" class="mycode_b">  bool newDataSDS = false;</span><br />
<span style="font-weight: bold;" class="mycode_b">  unsigned long chars;</span><br />
<span style="font-weight: bold;" class="mycode_b">  unsigned short sentences, failed;</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">  // Obtener el tiempo actual</span><br />
<span style="font-weight: bold;" class="mycode_b">  unsigned long currentTime = millis();</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">  // Verificar si ha pasado el intervalo de tiempo deseado</span><br />
<span style="font-weight: bold;" class="mycode_b">  if (currentTime - previousTime &gt;= interval)</span><br />
<span style="font-weight: bold;" class="mycode_b">  {</span><br />
<span style="font-weight: bold;" class="mycode_b">    previousTime = currentTime; // Actualizar el tiempo anterior</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">    // Leer datos del sensor de partículas SDS011</span><br />
<span style="font-weight: bold;" class="mycode_b">    float pm25, pm10;</span><br />
<span style="font-weight: bold;" class="mycode_b">    if (sds.read(&amp;pm25, &amp;pm10))</span><br />
<span style="font-weight: bold;" class="mycode_b">    {</span><br />
<span style="font-weight: bold;" class="mycode_b">      newDataSDS = true;</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">      // Abrir el archivo en modo escritura y añadir datos al final</span><br />
<span style="font-weight: bold;" class="mycode_b">      dataFile = SD.open("data.csv", FILE_WRITE);</span><br />
<span style="font-weight: bold;" class="mycode_b">      if (dataFile)</span><br />
<span style="font-weight: bold;" class="mycode_b">      {</span><br />
<span style="font-weight: bold;" class="mycode_b">        // Escribir los datos en el archivo CSV</span><br />
<span style="font-weight: bold;" class="mycode_b">        float latitude = gps.location.lat();</span><br />
<span style="font-weight: bold;" class="mycode_b">        float longitude = gps.location.lng();</span><br />
<span style="font-weight: bold;" class="mycode_b">        dataFile.print(latitude, 6);</span><br />
<span style="font-weight: bold;" class="mycode_b">        dataFile.print(",");</span><br />
<span style="font-weight: bold;" class="mycode_b">        dataFile.print(longitude, 6);</span><br />
<span style="font-weight: bold;" class="mycode_b">        dataFile.print(",");</span><br />
<span style="font-weight: bold;" class="mycode_b">        dataFile.print(gps.satellites.value());</span><br />
<span style="font-weight: bold;" class="mycode_b">        dataFile.print(",");</span><br />
<span style="font-weight: bold;" class="mycode_b">        dataFile.print(gps.hdop.value());</span><br />
<span style="font-weight: bold;" class="mycode_b">        dataFile.print(",");</span><br />
<span style="font-weight: bold;" class="mycode_b">        dataFile.print(pm25);</span><br />
<span style="font-weight: bold;" class="mycode_b">        dataFile.print(",");</span><br />
<span style="font-weight: bold;" class="mycode_b">        dataFile.println(pm10);</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">        // Cerrar el archivo</span><br />
<span style="font-weight: bold;" class="mycode_b">        dataFile.close();</span><br />
<span style="font-weight: bold;" class="mycode_b">      }</span><br />
<span style="font-weight: bold;" class="mycode_b">      else</span><br />
<span style="font-weight: bold;" class="mycode_b">      {</span><br />
<span style="font-weight: bold;" class="mycode_b">        Serial.println("Error al abrir el archivo.");</span><br />
<span style="font-weight: bold;" class="mycode_b">      }</span><br />
<span style="font-weight: bold;" class="mycode_b">    }</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">    // Imprimir los datos en el Monitor Serie</span><br />
<span style="font-weight: bold;" class="mycode_b">    if (newDataGPS)</span><br />
<span style="font-weight: bold;" class="mycode_b">    {</span><br />
<span style="font-weight: bold;" class="mycode_b">      Serial.print("LAT=");</span><br />
<span style="font-weight: bold;" class="mycode_b">      Serial.print(gps.location.lat(), 6);</span><br />
<span style="font-weight: bold;" class="mycode_b">      Serial.print(" LON=");</span><br />
<span style="font-weight: bold;" class="mycode_b">      Serial.print(gps.location.lng(), 6);</span><br />
<span style="font-weight: bold;" class="mycode_b">      Serial.println();</span><br />
<span style="font-weight: bold;" class="mycode_b">    }</span><br />
<span style="font-weight: bold;" class="mycode_b">    else</span><br />
<span style="font-weight: bold;" class="mycode_b">    {</span><br />
<span style="font-weight: bold;" class="mycode_b">      Serial.println(" No se recibieron caracteres del GPS: revisa la conexión ");</span><br />
<span style="font-weight: bold;" class="mycode_b">    }</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">    if (newDataSDS)</span><br />
<span style="font-weight: bold;" class="mycode_b">    {</span><br />
<span style="font-weight: bold;" class="mycode_b">      Serial.print("PM2.5=");</span><br />
<span style="font-weight: bold;" class="mycode_b">      Serial.print(pm25);</span><br />
<span style="font-weight: bold;" class="mycode_b">      Serial.print(" PM10=");</span><br />
<span style="font-weight: bold;" class="mycode_b">      Serial.print(pm10);</span><br />
<span style="font-weight: bold;" class="mycode_b">      Serial.println();</span><br />
<span style="font-weight: bold;" class="mycode_b">    }</span><br />
<span style="font-weight: bold;" class="mycode_b">    else</span><br />
<span style="font-weight: bold;" class="mycode_b">    {</span><br />
<span style="font-weight: bold;" class="mycode_b">      Serial.println(" No se recibieron datos del sensor de partículas: revisa la conexión ");</span><br />
<span style="font-weight: bold;" class="mycode_b">    }</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">    // Ajustar el intervalo de tiempo si el usuario lo desea</span><br />
<span style="font-weight: bold;" class="mycode_b">    if (Serial.available() &gt; 0)</span><br />
<span style="font-weight: bold;" class="mycode_b">    {</span><br />
<span style="font-weight: bold;" class="mycode_b">      interval = Serial.parseInt();</span><br />
<span style="font-weight: bold;" class="mycode_b">    }</span><br />
<span style="font-weight: bold;" class="mycode_b">  }</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">  // Para parsear los datos del GPS durante un segundo</span><br />
<span style="font-weight: bold;" class="mycode_b">  while (ss.available())</span><br />
<span style="font-weight: bold;" class="mycode_b">  {</span><br />
<span style="font-weight: bold;" class="mycode_b">    char c = ss.read();</span><br />
<span style="font-weight: bold;" class="mycode_b">    Serial.write&copy;; // Descomenta esta línea si quieres ver los datos del GPS en el Monitor Serie</span><br />
<span style="font-weight: bold;" class="mycode_b">    if (gps.encode&copy;) // ¿Se recibió una nueva sentencia válida?</span><br />
<span style="font-weight: bold;" class="mycode_b">      newDataGPS = true;</span><br />
<span style="font-weight: bold;" class="mycode_b">  }</span><br />
<span style="font-weight: bold;" class="mycode_b">}</span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Adafruit Neo Pixel, 2 aros led a diferentes ms...? SOLUCIONADO]]></title>
			<link>https://www.spainlabs.com/foros/showthread.php?tid=13474</link>
			<pubDate>Fri, 14 Jul 2023 14:37:46 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.spainlabs.com/foros/member.php?action=profile&uid=13280">luciano</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.spainlabs.com/foros/showthread.php?tid=13474</guid>
			<description><![CDATA[Hola a todos, como están?<br />
<br />
Le cuento que tengo 2 ring leds HW-159 de 7 leds cada uno (imagen 1). El primero quiero que este con una animación por ejemplo rainbow() con una velocidad de 500ms y el segundo al mismo tiempo con (por ejemplo) theaterChaseRainbow() en 900ms ambos con la librería de Adafruit Neo Pixel y no logro que funcionen bien. El código que estoy compartiendo es uno de los códigos de <span style="font-weight: bold;" class="mycode_b">ejemplo </span>que vienen con la librería de NeoPixel la cual reemplaza la función delay() por millis(), ideal para lo que quiero hacer pero a la hora de agregar un segundo aro de led es donde fallo y uno de los dos hace mal el efecto.  <br />
<br />
Imagen 1:<br />
<a href="https://imgbb.com/" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.ibb.co/zsCR69T/ring-led.jpg" loading="lazy"  alt="[Imagen: ring-led.jpg]" class="mycode_img" /></a><br />
<br />
Link a la librería:<br />
<a href="https://github.com/adafruit/Adafruit_NeoPixel" target="_blank" rel="noopener" class="mycode_url">https://github.com/adafruit/Adafruit_NeoPixel</a><br />
<br />
Componentes:<br />
- Arduino UNO R3.<br />
- 2 ring leds HW-159.<br />
<br />
Esquema:<br />
- Pin 3 conectado al led ring 1.<br />
- Pin 5 conectado al led ring 2.<br />
<br />
Código original:<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>#include &lt;Adafruit_NeoPixel.h&gt;<br />
#ifdef __AVR__<br />
#include &lt;avr/power.h&gt; // Required for 16 MHz Adafruit Trinket<br />
#endif<br />
<br />
#define LED_PIN    3 //Aro 1<br />
#define LED_COUNT    7 //Leds por aro<br />
#define LED_PIN2    5//Aro 2<br />
<br />
// Declare our NeoPixel strip object:<br />
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); //Aro 1<br />
<br />
// Declare our NeoPixel strip object:<br />
Adafruit_NeoPixel strip2(LED_COUNT, LED_PIN2, NEO_GRB + NEO_KHZ800); //Aro 2<br />
<br />
unsigned long pixelPrevious = 0;        // Previous Pixel Millis<br />
unsigned long patternPrevious = 0;      // Previous Pattern Millis<br />
int          patternCurrent = 0;      // Current Pattern Number<br />
int          patternInterval = 5000;  // Pattern Interval (ms)<br />
int          pixelInterval = 50;      // Pixel Interval (ms)<br />
int          pixelQueue = 0;          // Pattern Pixel Queue<br />
int          pixelCycle = 0;          // Pattern Pixel Cycle<br />
uint16_t      pixelCurrent = 0;        // Pattern Current Pixel Number<br />
uint16_t      pixelNumber = LED_COUNT;  // Total Number of Pixels<br />
<br />
// setup() function -- runs once at startup --------------------------------<br />
void setup() {<br />
  // These lines are specifically to support the Adafruit Trinket 5V 16 MHz.<br />
  // Any other board, you can remove this part (but no harm leaving it):<br />
#if defined(__AVR_ATtiny85__) &amp;&amp; (F_CPU == 16000000)<br />
  clock_prescale_set(clock_div_1);<br />
#endif<br />
  // END of Trinket-specific code.<br />
  strip.begin();          // INITIALIZE NeoPixel strip object (REQUIRED)<br />
  strip.show();            // Turn OFF all pixels ASAP<br />
  strip.setBrightness(50); // Set BRIGHTNESS to about 1/5 (max = 255)<br />
<br />
  strip2.begin();          // INITIALIZE NeoPixel strip object (REQUIRED)<br />
  strip2.show();            // Turn OFF all pixels ASAP<br />
  strip2.setBrightness(50); // Set BRIGHTNESS to about 1/5 (max = 255)<br />
}<br />
// loop() function -- runs repeatedly as long as board is on ---------------<br />
void loop() {<br />
  unsigned long currentMillis = millis();                    //  Update current time<br />
  if((currentMillis - patternPrevious) &gt;= patternInterval) {  //  Check for expired time<br />
    patternPrevious = currentMillis;<br />
    patternCurrent++;                                        //  Advance to next pattern<br />
    if(patternCurrent &gt;= 7)<br />
      patternCurrent = 0;<br />
  }<br />
 <br />
  if(currentMillis - pixelPrevious &gt;= pixelInterval) {        //  Check for expired time<br />
    pixelPrevious = currentMillis;                            //  Run current frame<br />
    switch (patternCurrent) {<br />
      case 7:<br />
        theaterChaseRainbow(50); <br />
        theaterChaseRainbow2(120);<br />
        break;<br />
      case 6:<br />
        rainbow(10); <br />
        break;   <br />
      case 5:<br />
        theaterChase(strip.Color(0, 0, 127), 50); // Blue<br />
        break;<br />
      case 4:<br />
        theaterChase(strip.Color(127, 0, 0), 50); // Red<br />
        break;<br />
      case 3:<br />
        theaterChase(strip.Color(127, 127, 127), 50); // White<br />
        break;<br />
      case 2:<br />
        colorWipe(strip.Color(0, 0, 255), 50); // Blue<br />
        break;<br />
      case 1:<br />
        colorWipe(strip.Color(0, 255, 0), 50); // Green<br />
        break;       <br />
      default:<br />
        colorWipe(strip.Color(255, 0, 0), 50); // Red<br />
        break;<br />
    }<br />
  }<br />
}<br />
void colorWipe(uint32_t color, int wait) {<br />
  if(pixelInterval != wait)<br />
    pixelInterval = wait;                  //  Update delay time<br />
  strip.setPixelColor(pixelCurrent, color); //  Set pixel's color (in RAM)<br />
  strip.show();                            //  Update strip to match<br />
  pixelCurrent++;                          //  Advance current pixel<br />
  if(pixelCurrent &gt;= pixelNumber)          //  Loop the pattern from the first LED<br />
    pixelCurrent = 0;<br />
}<br />
void theaterChase(uint32_t color, int wait) {<br />
  if(pixelInterval != wait)<br />
    pixelInterval = wait;                  //  Update delay time<br />
  for(int i = 0; i &lt; pixelNumber; i++) {<br />
    strip.setPixelColor(i + pixelQueue, color); //  Set pixel's color (in RAM)<br />
  }<br />
  strip.show();                            //  Update strip to match<br />
  for(int i=0; i &lt; pixelNumber; i+=3) {<br />
    strip.setPixelColor(i + pixelQueue, strip.Color(0, 0, 0)); //  Set pixel's color (in RAM)<br />
  }<br />
  pixelQueue++;                            //  Advance current pixel<br />
  if(pixelQueue &gt;= 3)<br />
    pixelQueue = 0;                        //  Loop the pattern from the first LED<br />
}<br />
// Rainbow cycle along whole strip. Pass delay time (in ms) between frames.<br />
void rainbow(uint8_t wait) {<br />
  if(pixelInterval != wait)<br />
    pixelInterval = wait;                 <br />
  for(uint16_t i=0; i &lt; pixelNumber; i++) {<br />
    strip.setPixelColor(i, Wheel((i + pixelCycle) &amp; 255)); //  Update delay time <br />
  }<br />
  strip.show();                            //  Update strip to match<br />
  pixelCycle++;                            //  Advance current cycle<br />
  if(pixelCycle &gt;= 256)<br />
    pixelCycle = 0;                        //  Loop the cycle back to the begining<br />
}<br />
//Theatre-style crawling lights with rainbow effect<br />
void theaterChaseRainbow(uint8_t wait) {<br />
  if(pixelInterval != wait)<br />
    pixelInterval = wait;                  //  Update delay time <br />
  for(int i=0; i &lt; pixelNumber; i+=3) {<br />
    strip.setPixelColor(i + pixelQueue, Wheel((i + pixelCycle) % 255)); //  Update delay time <br />
  }<br />
  strip.show();<br />
  for(int i=0; i &lt; pixelNumber; i+=3) {<br />
    strip.setPixelColor(i + pixelQueue, strip.Color(0, 0, 0)); //  Update delay time <br />
  }     <br />
  pixelQueue++;                          //  Advance current queue <br />
  pixelCycle++;                          //  Advance current cycle<br />
  if(pixelQueue &gt;= 3)<br />
    pixelQueue = 0;                      //  Loop<br />
  if(pixelCycle &gt;= 256)<br />
    pixelCycle = 0;                      //  Loop<br />
}<br />
uint32_t Wheel(byte WheelPos) {<br />
  WheelPos = 255 - WheelPos;<br />
  if(WheelPos &lt; 85) {<br />
    return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);<br />
  }<br />
  if(WheelPos &lt; 170) {<br />
    WheelPos -= 85;<br />
    return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);<br />
  }<br />
  WheelPos -= 170;<br />
  return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);<br />
}<br />
<br />
void theaterChaseRainbow2(uint8_t wait) {<br />
  if(pixelInterval != wait)<br />
    pixelInterval = wait;                  //  Update delay time <br />
  for(int i=0; i &lt; pixelNumber; i+=3) {<br />
    strip2.setPixelColor(i + pixelQueue, Wheel2((i + pixelCycle) % 255)); //  Update delay time <br />
  }<br />
  strip2.show();<br />
  for(int i=0; i &lt; pixelNumber; i+=3) {<br />
    strip2.setPixelColor(i + pixelQueue, strip2.Color(0, 0, 0)); //  Update delay time <br />
  }     <br />
  pixelQueue++;                          //  Advance current queue <br />
  pixelCycle++;                          //  Advance current cycle<br />
  if(pixelQueue &gt;= 3)<br />
    pixelQueue = 0;                      //  Loop<br />
  if(pixelCycle &gt;= 256)<br />
    pixelCycle = 0;                      //  Loop<br />
}<br />
<br />
uint32_t Wheel2(byte WheelPos) {<br />
  WheelPos = 255 - WheelPos;<br />
  if(WheelPos &lt; 85) {<br />
    return strip2.Color(255 - WheelPos * 3, 0, WheelPos * 3);<br />
  }<br />
  if(WheelPos &lt; 170) {<br />
    WheelPos -= 85;<br />
    return strip2.Color(0, WheelPos * 3, 255 - WheelPos * 3);<br />
  }<br />
  WheelPos -= 170;<br />
  return strip2.Color(WheelPos * 3, 255 - WheelPos * 3, 0);<br />
}</code></div></div><br />
Calculo que mi error viene por no duplicar las variables de tiempo (pixelCycle, pixelQueue, etc) ahora que redacto esta duda en el foro pero también con esto abro la siguiente pregunta, hay alguna forma mas prolija de hacerlo? No encontré en las funciones de Adafruit Neo Pixel la posibilidad de agregar otro modulo led con distinta animación o delay/tiempo pero no quiere decir que no exista, alguien sabe si existe?<br />
<br />
Cualquier consejo será bienvenido.<br />
Muchas gracias!]]></description>
			<content:encoded><![CDATA[Hola a todos, como están?<br />
<br />
Le cuento que tengo 2 ring leds HW-159 de 7 leds cada uno (imagen 1). El primero quiero que este con una animación por ejemplo rainbow() con una velocidad de 500ms y el segundo al mismo tiempo con (por ejemplo) theaterChaseRainbow() en 900ms ambos con la librería de Adafruit Neo Pixel y no logro que funcionen bien. El código que estoy compartiendo es uno de los códigos de <span style="font-weight: bold;" class="mycode_b">ejemplo </span>que vienen con la librería de NeoPixel la cual reemplaza la función delay() por millis(), ideal para lo que quiero hacer pero a la hora de agregar un segundo aro de led es donde fallo y uno de los dos hace mal el efecto.  <br />
<br />
Imagen 1:<br />
<a href="https://imgbb.com/" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.ibb.co/zsCR69T/ring-led.jpg" loading="lazy"  alt="[Imagen: ring-led.jpg]" class="mycode_img" /></a><br />
<br />
Link a la librería:<br />
<a href="https://github.com/adafruit/Adafruit_NeoPixel" target="_blank" rel="noopener" class="mycode_url">https://github.com/adafruit/Adafruit_NeoPixel</a><br />
<br />
Componentes:<br />
- Arduino UNO R3.<br />
- 2 ring leds HW-159.<br />
<br />
Esquema:<br />
- Pin 3 conectado al led ring 1.<br />
- Pin 5 conectado al led ring 2.<br />
<br />
Código original:<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>#include &lt;Adafruit_NeoPixel.h&gt;<br />
#ifdef __AVR__<br />
#include &lt;avr/power.h&gt; // Required for 16 MHz Adafruit Trinket<br />
#endif<br />
<br />
#define LED_PIN    3 //Aro 1<br />
#define LED_COUNT    7 //Leds por aro<br />
#define LED_PIN2    5//Aro 2<br />
<br />
// Declare our NeoPixel strip object:<br />
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); //Aro 1<br />
<br />
// Declare our NeoPixel strip object:<br />
Adafruit_NeoPixel strip2(LED_COUNT, LED_PIN2, NEO_GRB + NEO_KHZ800); //Aro 2<br />
<br />
unsigned long pixelPrevious = 0;        // Previous Pixel Millis<br />
unsigned long patternPrevious = 0;      // Previous Pattern Millis<br />
int          patternCurrent = 0;      // Current Pattern Number<br />
int          patternInterval = 5000;  // Pattern Interval (ms)<br />
int          pixelInterval = 50;      // Pixel Interval (ms)<br />
int          pixelQueue = 0;          // Pattern Pixel Queue<br />
int          pixelCycle = 0;          // Pattern Pixel Cycle<br />
uint16_t      pixelCurrent = 0;        // Pattern Current Pixel Number<br />
uint16_t      pixelNumber = LED_COUNT;  // Total Number of Pixels<br />
<br />
// setup() function -- runs once at startup --------------------------------<br />
void setup() {<br />
  // These lines are specifically to support the Adafruit Trinket 5V 16 MHz.<br />
  // Any other board, you can remove this part (but no harm leaving it):<br />
#if defined(__AVR_ATtiny85__) &amp;&amp; (F_CPU == 16000000)<br />
  clock_prescale_set(clock_div_1);<br />
#endif<br />
  // END of Trinket-specific code.<br />
  strip.begin();          // INITIALIZE NeoPixel strip object (REQUIRED)<br />
  strip.show();            // Turn OFF all pixels ASAP<br />
  strip.setBrightness(50); // Set BRIGHTNESS to about 1/5 (max = 255)<br />
<br />
  strip2.begin();          // INITIALIZE NeoPixel strip object (REQUIRED)<br />
  strip2.show();            // Turn OFF all pixels ASAP<br />
  strip2.setBrightness(50); // Set BRIGHTNESS to about 1/5 (max = 255)<br />
}<br />
// loop() function -- runs repeatedly as long as board is on ---------------<br />
void loop() {<br />
  unsigned long currentMillis = millis();                    //  Update current time<br />
  if((currentMillis - patternPrevious) &gt;= patternInterval) {  //  Check for expired time<br />
    patternPrevious = currentMillis;<br />
    patternCurrent++;                                        //  Advance to next pattern<br />
    if(patternCurrent &gt;= 7)<br />
      patternCurrent = 0;<br />
  }<br />
 <br />
  if(currentMillis - pixelPrevious &gt;= pixelInterval) {        //  Check for expired time<br />
    pixelPrevious = currentMillis;                            //  Run current frame<br />
    switch (patternCurrent) {<br />
      case 7:<br />
        theaterChaseRainbow(50); <br />
        theaterChaseRainbow2(120);<br />
        break;<br />
      case 6:<br />
        rainbow(10); <br />
        break;   <br />
      case 5:<br />
        theaterChase(strip.Color(0, 0, 127), 50); // Blue<br />
        break;<br />
      case 4:<br />
        theaterChase(strip.Color(127, 0, 0), 50); // Red<br />
        break;<br />
      case 3:<br />
        theaterChase(strip.Color(127, 127, 127), 50); // White<br />
        break;<br />
      case 2:<br />
        colorWipe(strip.Color(0, 0, 255), 50); // Blue<br />
        break;<br />
      case 1:<br />
        colorWipe(strip.Color(0, 255, 0), 50); // Green<br />
        break;       <br />
      default:<br />
        colorWipe(strip.Color(255, 0, 0), 50); // Red<br />
        break;<br />
    }<br />
  }<br />
}<br />
void colorWipe(uint32_t color, int wait) {<br />
  if(pixelInterval != wait)<br />
    pixelInterval = wait;                  //  Update delay time<br />
  strip.setPixelColor(pixelCurrent, color); //  Set pixel's color (in RAM)<br />
  strip.show();                            //  Update strip to match<br />
  pixelCurrent++;                          //  Advance current pixel<br />
  if(pixelCurrent &gt;= pixelNumber)          //  Loop the pattern from the first LED<br />
    pixelCurrent = 0;<br />
}<br />
void theaterChase(uint32_t color, int wait) {<br />
  if(pixelInterval != wait)<br />
    pixelInterval = wait;                  //  Update delay time<br />
  for(int i = 0; i &lt; pixelNumber; i++) {<br />
    strip.setPixelColor(i + pixelQueue, color); //  Set pixel's color (in RAM)<br />
  }<br />
  strip.show();                            //  Update strip to match<br />
  for(int i=0; i &lt; pixelNumber; i+=3) {<br />
    strip.setPixelColor(i + pixelQueue, strip.Color(0, 0, 0)); //  Set pixel's color (in RAM)<br />
  }<br />
  pixelQueue++;                            //  Advance current pixel<br />
  if(pixelQueue &gt;= 3)<br />
    pixelQueue = 0;                        //  Loop the pattern from the first LED<br />
}<br />
// Rainbow cycle along whole strip. Pass delay time (in ms) between frames.<br />
void rainbow(uint8_t wait) {<br />
  if(pixelInterval != wait)<br />
    pixelInterval = wait;                 <br />
  for(uint16_t i=0; i &lt; pixelNumber; i++) {<br />
    strip.setPixelColor(i, Wheel((i + pixelCycle) &amp; 255)); //  Update delay time <br />
  }<br />
  strip.show();                            //  Update strip to match<br />
  pixelCycle++;                            //  Advance current cycle<br />
  if(pixelCycle &gt;= 256)<br />
    pixelCycle = 0;                        //  Loop the cycle back to the begining<br />
}<br />
//Theatre-style crawling lights with rainbow effect<br />
void theaterChaseRainbow(uint8_t wait) {<br />
  if(pixelInterval != wait)<br />
    pixelInterval = wait;                  //  Update delay time <br />
  for(int i=0; i &lt; pixelNumber; i+=3) {<br />
    strip.setPixelColor(i + pixelQueue, Wheel((i + pixelCycle) % 255)); //  Update delay time <br />
  }<br />
  strip.show();<br />
  for(int i=0; i &lt; pixelNumber; i+=3) {<br />
    strip.setPixelColor(i + pixelQueue, strip.Color(0, 0, 0)); //  Update delay time <br />
  }     <br />
  pixelQueue++;                          //  Advance current queue <br />
  pixelCycle++;                          //  Advance current cycle<br />
  if(pixelQueue &gt;= 3)<br />
    pixelQueue = 0;                      //  Loop<br />
  if(pixelCycle &gt;= 256)<br />
    pixelCycle = 0;                      //  Loop<br />
}<br />
uint32_t Wheel(byte WheelPos) {<br />
  WheelPos = 255 - WheelPos;<br />
  if(WheelPos &lt; 85) {<br />
    return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);<br />
  }<br />
  if(WheelPos &lt; 170) {<br />
    WheelPos -= 85;<br />
    return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);<br />
  }<br />
  WheelPos -= 170;<br />
  return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);<br />
}<br />
<br />
void theaterChaseRainbow2(uint8_t wait) {<br />
  if(pixelInterval != wait)<br />
    pixelInterval = wait;                  //  Update delay time <br />
  for(int i=0; i &lt; pixelNumber; i+=3) {<br />
    strip2.setPixelColor(i + pixelQueue, Wheel2((i + pixelCycle) % 255)); //  Update delay time <br />
  }<br />
  strip2.show();<br />
  for(int i=0; i &lt; pixelNumber; i+=3) {<br />
    strip2.setPixelColor(i + pixelQueue, strip2.Color(0, 0, 0)); //  Update delay time <br />
  }     <br />
  pixelQueue++;                          //  Advance current queue <br />
  pixelCycle++;                          //  Advance current cycle<br />
  if(pixelQueue &gt;= 3)<br />
    pixelQueue = 0;                      //  Loop<br />
  if(pixelCycle &gt;= 256)<br />
    pixelCycle = 0;                      //  Loop<br />
}<br />
<br />
uint32_t Wheel2(byte WheelPos) {<br />
  WheelPos = 255 - WheelPos;<br />
  if(WheelPos &lt; 85) {<br />
    return strip2.Color(255 - WheelPos * 3, 0, WheelPos * 3);<br />
  }<br />
  if(WheelPos &lt; 170) {<br />
    WheelPos -= 85;<br />
    return strip2.Color(0, WheelPos * 3, 255 - WheelPos * 3);<br />
  }<br />
  WheelPos -= 170;<br />
  return strip2.Color(WheelPos * 3, 255 - WheelPos * 3, 0);<br />
}</code></div></div><br />
Calculo que mi error viene por no duplicar las variables de tiempo (pixelCycle, pixelQueue, etc) ahora que redacto esta duda en el foro pero también con esto abro la siguiente pregunta, hay alguna forma mas prolija de hacerlo? No encontré en las funciones de Adafruit Neo Pixel la posibilidad de agregar otro modulo led con distinta animación o delay/tiempo pero no quiere decir que no exista, alguien sabe si existe?<br />
<br />
Cualquier consejo será bienvenido.<br />
Muchas gracias!]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[ayuda y consulta]]></title>
			<link>https://www.spainlabs.com/foros/showthread.php?tid=13341</link>
			<pubDate>Wed, 15 Mar 2023 15:23:51 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.spainlabs.com/foros/member.php?action=profile&uid=16415">CARLOSASSET</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.spainlabs.com/foros/showthread.php?tid=13341</guid>
			<description><![CDATA[<span style="font-weight: bold;" class="mycode_b">hola grupo tengo una consulta que hacerles,resulta q se me jodio la placa de mi impresora 3d wanhao i3 mini, queria saber si se le podria poner una placa arduino con adaptador de lcd ya q la placa original no la encuentro,desde ya muchas gracias</span>]]></description>
			<content:encoded><![CDATA[<span style="font-weight: bold;" class="mycode_b">hola grupo tengo una consulta que hacerles,resulta q se me jodio la placa de mi impresora 3d wanhao i3 mini, queria saber si se le podria poner una placa arduino con adaptador de lcd ya q la placa original no la encuentro,desde ya muchas gracias</span>]]></content:encoded>
		</item>
	</channel>
</rss>