Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: main.cpp
- Revision:
- 4:7a06dce3de99
- Parent:
- 3:3454cb7584e1
- Child:
- 5:d165935ba818
--- a/main.cpp Sat Mar 09 17:33:26 2019 +0000
+++ b/main.cpp Fri Apr 19 18:09:38 2019 +0000
@@ -47,51 +47,62 @@
******************************************************************************/
-#define INITELE 0xFE
-#define RESPUESTA1 0xFF01
-#define RESPUESTA2 0xFF02
-#define RESPUESTA3 0xFF03
-#define RESPUESTA4 0xFF04
-#define RESPUESTA5 0xFF05
-#define CMD 0x01
-#define DO 1300
-#define RE 1500
-#define MI 1600
-#define FA 1800
-#define SO 2000
+#define INITCMD 0xFF
+#define DO 2000
+#define RE 2500
+#define MI 3000
+#define FA 3500
-Serial command(USBTX, USBRX);
-// S0, S1, S2, S3, OUT
-scolor_TCS3200 scolor(PA_8, PB_10, PB_4, PB_5, PB_3);
+/* ||Definicion de Puertos || */
+ Serial command(USBTX, USBRX);
+ // S0, S1, S2, S3, OUT
+ scolor_TCS3200 scolor( PA_9, PC_7, PB_6, PA_7, PA_6 ) ;
+ DigitalOut stepper_step ( PB_4 ) ;
+ DigitalOut steppeer_dir ( PB_5 ) ;
+ DigitalOut stepper_step2 ( PB_10 ) ;
+ DigitalOut steppeer_dir2 ( PA_8 ) ;
+ AnalogIn analog_value0 ( A0 ) ;
+ AnalogIn analog_value1 ( A1 ) ;
+ PwmOut mybuzzer( PB_9 ) ;
+/* ||Definicion de Puertos || */
+
+ uint32_t VELOCITY = 400 ; // Tiempo en micro segundos
+ int16_t Lectura [ 2 ] = {} ;
+ double In[ 1 ] = { } ;
+
// definición de las funciones
-void setup_uart();
-void leer_datos();
-void leer_color();
-uint8_t cmd;
-PwmOut mybuzzer(PA_5);
+ void setup_uart();
+ void leer_datos();
+ void leer_color();
+ void funcionesrobot ( uint8_t _Parametro, uint8_t _Comando );
int main() {
setup_uart();
while(1){
leer_datos();
- if (cmd==CMD){}
- leer_color();
- }
+ funcionesrobot ( Lectura [ 1 ], Lectura [ 0 ] );
+
+ }
}
-
void setup_uart(){
command.baud(115200);
}
void leer_datos(){
- while(command.getc()!= INITELE);
- cmd=command.getc();
+
+ while(command.getc()!= INITCMD) ;
+ uint8_t i ;
+ for ( i = 0 ; i < 2 ; i++){
+
+ Lectura [ i ] = command.getc();
+ printf ( " %4d ", Lectura [ i ]);
+ }
}
@@ -107,7 +118,7 @@
long frqgreen;
long frqblue;
long frqclear;
- int8_t sel_color;
+ int8_t sel_color = 0;
printf("RED: %5d GREEN: %5d BLUE: %5d CLEAR: %5d \n ", red, green, blue, clear);
frqred = ( ( 1.0/red )* 1000.0 );
@@ -125,12 +136,12 @@
if ( frqblue >= 5.0 and frqblue <= 29.0 ) {
- //printf ( "tiende a rojo \n" );
+ printf ( "tiende a rojo \n" );
mybuzzer.period_us(DO);
- mybuzzer.write(0.5);
+ mybuzzer.write(0.8);
wait(5);
mybuzzer.write(0);
- sel_color=1;
+ sel_color = 1;
}
}
@@ -142,14 +153,14 @@
if( frqred >= 8.0 and frqred <= 20.0 ) {
- if ( frqblue >= 10.0 and frqblue <= 22.0 ) {
+ if ( frqblue >= 10.0 and frqblue <= 26.0 ) {
printf ( "tiende a verde \n" );
mybuzzer.period_us(RE);
mybuzzer.write(0.5);
wait(5);
mybuzzer.write(0);
- sel_color=2;
+ sel_color = 2;
}
}
@@ -161,14 +172,14 @@
if( frqgreen >= 5.0 and frqgreen <= 26.0 ) {
- if ( frqred >= 5.0 and frqred <= 25.0 ) {
+ if ( frqred >= 5.0 and frqred <= 20.0 ) {
- //printf ( "tiende a azul \n" );
+ printf ( "tiende a azul \n" );
mybuzzer.period_us(MI);
- mybuzzer.write(0.5);
+ mybuzzer.write(1);
wait(5);
mybuzzer.write(0);
- sel_color=3;
+ sel_color = 3;
}
}
@@ -176,18 +187,18 @@
/////////////////////////////////////////////////////////////////////////////////
/*°°°°°°°°°°°°°°°°°°°°°°°°°°°°°Color amarillo°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°*/
////////////////////////////////////////////////////////////////////////////////
- if ( frqblue >= 0.0 and frqblue <= 25.0 ) {
+ if ( frqblue >= 0.0 and frqblue <= 30.0 ) {
if( frqgreen >= 20.0 and frqgreen <= 40.0) {
- if ( 20.0 >= frqred <= 46.0 ) {
+ if ( frqred >= 20.0 and frqred <= 50.0 ) {
printf ( "tiende a amarillo \n" );
mybuzzer.period_us(FA);
- mybuzzer.write(0.5);
+ mybuzzer.write(0.6);
wait(5);
mybuzzer.write(0);
- sel_color=4;
+ sel_color = 4;
}
}
@@ -198,47 +209,320 @@
switch ( sel_color ) {
+ case 0:
+
+ //int32_t enviar5 = RESPUESTA5 ;
+ //char txt5 [6] ;
+ //printf ( txt5 , "%02X" , enviar5 );
+ printf ( " FF00 \n " );
+
+ break;
+
case 1:
- int32_t enviar = RESPUESTA1 ;
- char txt [6] ;
- printf ( txt, "%04X" , RESPUESTA1 );
+ //int32_t enviar1 = RESPUESTA1 ;
+ //char txt1 [6] ;
+ printf ( "FE01 \n" );
+ sel_color = 0;
break;
case 2:
- int32_t enviar = RESPUESTA2 ;
- char txt [6] ;
- printf ( txt, "%04X" , RESPUESTA2 ) ;
-
+ //int32_t enviar2 = RESPUESTA2 ;
+ //char txt2 [6] ;
+ printf ( "FE02 \n" ) ;
+ sel_color = 0;
break;
case 3:
- int32_t enviar = RESPUESTA3;
- char txt [6] ;
- printf ( txt, "%04X" , RESPUESTA3 );
+ //int32_t enviar3 = RESPUESTA3;
+ //char txt3 [6] ;
+ printf ( "FE03 \n" );
+ sel_color = 0;
break;
case 4:
- int32_t enviar = RESPUESTA4;
- char txt [6] ;
- printf ( txt, "%04X" , RESPUESTA4 );
- break;
+ //int32_t enviar4 = RESPUESTA4;
+ //char txt4 [6] ;
+ printf ( "FE04 \n" );
+ sel_color = 0;
- default:{
-
- int32_t enviar = RESPUESTA4;
- char txt [6] ;
- printf ( txt, "%04X" , RESPUESTA4 );
-
- }
-
-
+ break;
}
}
+ void funcionesrobot ( uint8_t _Parametro, uint8_t _Comando ){
+
+ /* °°Declaración de contadores°° */
+ uint8_t i ;
+ uint8_t j ;
+
+ switch ( _Comando ){
+ // Acciones que ejerce el robot
+
+ case 0 :
+ leer_color() ;
+ break ;
+
+ case 1 :
+ printf ( "Frecuencia: 2000 Tiempo: %d s \n" , _Parametro ) ;
+ mybuzzer.period_us( DO ) ;
+ mybuzzer.write( 0.8 ) ;
+ wait( _Parametro ) ;
+ mybuzzer.write( 0 ) ;
+ break ;
+
+ case 2 :
+ printf ( "Frecuencia: 2500 Tiempo: %d s \n" , _Parametro ) ;
+ mybuzzer.period_us( RE ) ;
+ mybuzzer.write( 0.8 ) ;
+ wait( _Parametro ) ;
+ mybuzzer.write( 0 ) ;
+ break ;
+
+ case 3 :
+ printf ( " Frecuencia: 3000 " ); printf ( " Tiempo: %d s \n " , _Parametro ) ;
+ mybuzzer.period_us( MI ) ;
+ mybuzzer.write( 0.8 ) ;
+ wait( _Parametro ) ;
+ mybuzzer.write( 0 ) ;
+ break ;
+
+ case 4:
+ printf ( "Frecuencia: 3500 Tiempo: %d s \n" , _Parametro ) ;
+ mybuzzer.period_us( FA );
+ mybuzzer.write( 0.8 );
+ wait( 5 );
+ mybuzzer.write(0);
+ break ;
+
+ case 5 :
+
+ steppeer_dir = 1 ;
+ steppeer_dir2 = 0 ;
+ wait_us( 1 );
+ for ( j = 1 ; j <= _Parametro ; j++){
+
+ for ( i= 0 ; i <= 200 ; i++ ){
+
+ stepper_step = 1 ;
+ stepper_step2 = 1;
+ wait_us(VELOCITY);
+ stepper_step = 0;
+ stepper_step2 = 0;
+ wait_us(VELOCITY);
+
+ }
+
+ }
+
+ break;
+
+ case 6 :
+ steppeer_dir = 0;
+ steppeer_dir2 = 1;
+ wait_us( 1 );
+
+ for ( j = 1 ; j <= _Parametro ; j++){
+
+ for ( i= 0 ; i <= 200 ; i++ ){
+
+ stepper_step = 1 ;
+ stepper_step2 = 1 ;
+ wait_us(VELOCITY) ;
+ stepper_step = 0 ;
+ stepper_step2 = 0 ;
+ wait_us(VELOCITY) ;
+
+ }
+
+ }
+
+ break;
+ case 7:
+
+ steppeer_dir = 1;
+ wait_us( 1 );
+
+ for ( j = 1 ; j <= _Parametro ; j++){
+
+ for ( i= 0 ; i <= 50 ; i++ ){
+
+ stepper_step = 1 ;
+ //stepper_step2 = 1 ;
+ wait_us(VELOCITY) ;
+ stepper_step = 0 ;
+ //stepper_step2 = 0 ;
+ wait_us(VELOCITY) ;
+
+ }
+
+ }
+
+ break;
+
+ case 8 :
+
+ steppeer_dir = 1;
+ wait_us( 1 );
+
+ for ( j = 1 ; j <= _Parametro ; j++){
+
+ for ( i= 0 ; i <= 50 ; i++ ){
+
+ //stepper_step = 1 ;
+ stepper_step2 = 1 ;
+ wait_us(VELOCITY) ;
+ //stepper_step = 0 ;
+ stepper_step2 = 0 ;
+ wait_us(VELOCITY) ;
+
+ }
+
+ }
+
+ break;
+
+ case 9 :
+
+ switch ( _Parametro ){
+
+ case 1:
+
+ VELOCITY = 400 ;
+
+ break;
+
+ case 2:
+
+ VELOCITY = 2500 ;
+
+ break;
+
+ case 3:
+
+ VELOCITY = 5000 ;
+
+ break;
+
+ }
+
+ break;
+
+ case 10:
+
+ switch ( _Parametro ){
+
+ case 1:
+ In[0] = analog_value0.read(); // Converts and read the analog input value (value from 0.0 to 1.0)
+ printf(" X = %.04f \n", In[0]);
+
+ while ( In[0] >= 0.9 ){
+
+ steppeer_dir = 1;
+ wait_us( 1 );
+
+ for ( i= 0 ; i <= 50 ; i++ ){
+
+ stepper_step = 1 ;
+ //stepper_step2 = 1 ;
+ wait_us( VELOCITY ) ;
+ stepper_step = 0 ;
+ //stepper_step2 = 0 ;
+ wait_us( VELOCITY ) ;
+ In[0] = analog_value0.read();
+ }
+ }
+
+ while ( In[0] <= 0.4 ){
+
+ steppeer_dir2 = 1;
+ wait_us( 1 );
+
+ for ( i= 0 ; i <= 50 ; i++ ){
+
+ //stepper_step = 1 ;
+ stepper_step2 = 1 ;
+ wait_us( VELOCITY ) ;
+ //stepper_step = 0 ;
+ stepper_step2 = 0 ;
+ wait_us( VELOCITY ) ;
+ In[0] = analog_value0.read();
+ }
+ }
+ In[1] = analog_value1.read(); // Converts and read the analog input value (value from 0.0 to 1.0)
+ printf(" Y = %.04f \n", In[1]);
+ while (In[1] >= 0.9){
+
+ steppeer_dir = 1 ;
+ steppeer_dir2 = 0 ;
+ wait_us( 1 );
+ for ( i= 0 ; i <= 50 ; i++ ){
+
+ stepper_step = 1 ;
+ stepper_step2 = 1 ;
+ wait_us( VELOCITY ) ;
+ stepper_step = 0 ;
+ stepper_step2 = 0 ;
+ wait_us( VELOCITY ) ;
+
+ }
+ In[1] = analog_value1.read();
+
+ }
+
+ while (In[1] <= 0.4){
+
+ steppeer_dir = 0 ;
+ steppeer_dir2 = 1 ;
+ wait_us( 1 );
+ for ( i= 0 ; i <= 50 ; i++ ){
+
+ stepper_step = 1 ;
+ stepper_step2 = 1 ;
+ wait_us( VELOCITY ) ;
+ stepper_step = 0 ;
+ stepper_step2 = 0 ;
+ wait_us( VELOCITY ) ;
+
+ }
+ In[1] = analog_value1.read();
+
+ }
+ wait ( 1 );
+ break;
+
+ case 2:
+
+ In[0] = 0 ;
+ In[1] = 0 ;
+ printf(" X = %.04f, Y = %.04f \n", In[0], In[1] );
+
+ break;
+
+ }
+ break;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ }