Pages: [1]   Go Down
Author Topic: cargar otro sketch sin borrar  (Read 378 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola,soy nuevo por el foro y novato con el arduino,tengo una duda vereis tengo el arduino uno r3 y lo tengo conectado al l293 con joystick de ps2 y 2 motores de impresora ,el sketch esta bien funciona perfectamente pero ahora quiero cargarle un sketch de max6675 para sensor de temperatura y alguno que otro mas  que es lo que tendria que hacer para que no se borre el sketch de los motores?ponerlo en modo paralelo en herramientas - programador?

saludos
Logged

Offline Offline
Newbie
*
Karma: 2
Posts: 22
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pues si no me equivoco, solamente se puede cargar un sketch, lo que quiere decir que las funcionalidades que quieras añadir, tienes que incluirlas en el mismo sketch, además, programarlo para que el proceso loop haga un "time sharing" y se reparta el tiempo para ir haciendo cada una de las tareas, es decir, que el "multitarea" te lo tienes que programar tú.

Yo tengo desarrollado un sketch para una serie de cosas, y conviven simultáneamente la gestión de una botonera, la activación de varios dispositivos (hasta 11) lectura de temperaturas (2 sondas) y un "roll up" en la pantalla que va mostrando hasta un total de 18 pantallas de datos diferentes; también realiza las operaciones para controlar un menú de configuración de opciones de los dispositivos.

Es decir, que todo lo que quieras hacer, ha de ir en un solo sketch, y cada vez que lo cambias, has de cargarlo de nuevo, con lo que el anterior desaparece.
« Last Edit: March 19, 2014, 07:38:38 am by JohnnyDeauville » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Gracias por la ayuda es para una maquina de reballing arduino rework  pero estoy muy verde  smiley-roll-sweat tengo estos dos sketch:
/*
Contrôle de la base de robot au moyen d'un joystick
3-7 janvier 2012

*/

#define motorPin1a 3 // Marche avant du premier moteur
#define motorPin1b 4 // Marche arrière du premier moteur
#define speedPin1 9 // L293D enable pin pour le premier moteur
#define motorPin2a 5 // Marche avant du deuxième moteur
#define motorPin2b 6 // Marche arrière du deuxième moteur
#define speedPin2 10 // L293D enable pin pour le deuxième moteur
#define JoyStickPin1 1  //analog 1
#define JoyStickPin2 2  //analog 2

int Mspeed= 0;
int Mspeed1 = 0;
int Mspeed2 = 0; 

unsigned long time;

void setup() {

// réglage des broches à output
pinMode(motorPin1a, OUTPUT);
pinMode(motorPin1b, OUTPUT);
pinMode(speedPin1, OUTPUT);
pinMode(motorPin2a, OUTPUT);
pinMode(motorPin2b, OUTPUT);
pinMode(speedPin2, OUTPUT);
}

void loop() {
  Mspeed1 = (analogRead(JoyStickPin1)-511)/2;
  Mspeed1 = Mspeed1 - (analogRead(JoyStickPin2)-511)/2;
  if (Mspeed1 > 255) {
    Mspeed1 = 255;
  }
    if (Mspeed1 < -255) {
    Mspeed1 = -255;
  }
 
  Mspeed2 = (analogRead(JoyStickPin1)-511)/2;
  Mspeed2 = Mspeed2 + (analogRead(JoyStickPin2)-511)/2;
  if (Mspeed2 > 255) {
    Mspeed2 = 255;
  }     
  if (Mspeed2 < -255) {
    Mspeed2 = -255;
  }
 
  if (Mspeed1 > 0)  // donc marche arrière
  {
    analogWrite(speedPin1, abs(Mspeed1));
    digitalWrite(motorPin1a, LOW);
    digitalWrite(motorPin1b, HIGH);
  }
  else {   // donc marche avant (ou repos)
    analogWrite(speedPin1, abs(Mspeed1));
    digitalWrite(motorPin1a, HIGH);
    digitalWrite(motorPin1b, LOW);
  }
 
  if (Mspeed2 > 0)  // donc marche arrière
  { 
    analogWrite(speedPin2, abs(Mspeed2));
    digitalWrite(motorPin2a, LOW);
    digitalWrite(motorPin2b, HIGH);   
  }
  else  // donc marche avant (ou repos)
  {   
    analogWrite(speedPin2, abs(Mspeed2));
    digitalWrite(motorPin2a, HIGH);
    digitalWrite(motorPin2b, LOW);
  }
}


y el de los max6675 multi temp :                                                   


 /*
  Multi_Temp.pde - Example using the MAX6675 Library.
  Created by Ryan McLaughlin <ryanjmclaughlin@gmail.com>
*/

#include <MAX6675.h>

int LED1 = 6;      // Status LED Pin
int CS0 = 7;      // CS pin on MAX6675
int CS1 = 8;      // CS pin on MAX6675
int CS2 = 9;      // CS pin on MAX6675
int CS3 = 10;      // CS pin on MAX6675
int SO = 12;      // SO pin of MAX6675
int SCK = 13;      // SCK pin of MAX6675
int units = 0;      // Units to readout temp (0 = ˚F, 1 = ˚C)
float error1 = 0.0;   // Temperature compensation error
float error2 = 0.0;   // Temperature compensation error
float error3 = 0.0;   // Temperature compensation error
float error4 = 0.0;   // Temperature compensation error
int status = 0;      // Varible to control the status led

float temp[4];


MAX6675 temp0(CS0,SO,SCK,units,error1);
MAX6675 temp1(CS1,SO,SCK,units,error2);
MAX6675 temp2(CS2,SO,SCK,units,error3);
MAX6675 temp3(CS3,SO,SCK,units,error4);


// Setup Serial output and LED Pin 
// MAX6675 Library already sets pin modes for MAX6675 chip!

void setup() {
   Serial.begin(9600);
   pinMode(LED1, OUTPUT);
}


void loop() {
  temp[0] = temp0.read_temp(5);      // Read the temp 5 times and return the average value
  temp[1] = temp1.read_temp(5);      // Read the temp 5 times and return the average value
  temp[2] = temp2.read_temp(5);      // Read the temp 5 times and return the average value
  temp[3] = temp3.read_temp(5);      // Read the temp 5 times and return the average value
 
    Serial.print("Temperature: \t");   // Print Header to Serial
  for (int i=0; i<4; i++){    // Loop through each of the four temps
    status = 0;          // Reset the status to 0 before we check for errors
    if(temp == -1) {       // If there is an error with the TC, temperature will be -1
      Serial.print("ERROR!");    // Temperature is -1 and there is a thermocouple error
        status++;       // Add to the status varible so status LED turns on
    } else {
      Serial.print( temp );   // Print the temperature to Serial
    }
    Serial.print("\t");            // Print a tab to demininate the data
  }
   
  if(status > 0) {               // Check if we should turn on the status LED
    digitalWrite(LED1, HIGH);    // Turn on the status LED
  } else {
    digitalWrite(LED1, LOW);     // Turn off the status LED
  }
  Serial.println(" ");

  delay(1000);    // Wait one second before reading again
}


cuando pongo los 2 en un mismo sketch al compilar me da error no se como se tendria que modificar el loop.

saludos
Logged

Offline Offline
Newbie
*
Karma: 2
Posts: 22
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Tienes que intercalar las instrucciones como se debe, ahora mismo no tengo tiempo de escribírtelo, pero todas las definiciones de variables deben estar juntas, solo puede haber una función setup() y una loop(), en fín "mezclar" el código,

// Definiciones

void setup() {
  // Código de los dos setup que no esté repetido
}

void loop() {
  // Código de los dos loop junto, con cuidado de no repetir cosas que no se deben repetir
}


Sobre todo, hay que tener en cuenta que la programación es una tarea bastante compleja y no se aprende en dos días, ir probando poco a poco, con cosas sencillas y luego ir complicándolo una vez entendido el paso anterior.

Veo a mucha gente entrando a saco con código escrito por otros y no ve como meter mano por ningún lado, y es normal, además no es el método más adecuado para empezar, porque sobre todo desanima mucho.

Dale duro, y continúa, pero yo te aconsejaría ir probando cosas sencillas e ir complicándolo. Busca tutoriales, que iNet está lleno de ellos.

Y muuuuuuchas horas, eso sí.

Un saludo
« Last Edit: March 20, 2014, 09:13:31 am by JohnnyDeauville » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Gracias,empezare desde cero a programar smiley-confuse por que no entiendo nada jeje


saludos
Logged

Pages: [1]   Go Up
Jump to: