Arduino - Ayuda Código Arduino Maestro y esclavo

 
Vista:
sin imagen de perfil
Val: 16
Ha mantenido su posición en Arduino (en relación al último mes)
Gráfica de Arduino

Ayuda Código Arduino Maestro y esclavo

Publicado por Simonetti (4 intervenciones) el 16/12/2020 19:41:34
Saludos comunidad!!.

Estoy con un proyecto de arduino de un robot por cable.

En la actualidad lo tengo funcionando con una manguera de cable y todo funciona bien.

La instalación es sencilla pero compleja a la vez.

Para el movimiento del robot, tengo 4 pulsadores que, atendiendo a la resistencia, da una señal analógica y mi arduino la interpreta y controla el L298n para los motores.

Para la cámara, 4 pulsadores que dirigen dos servos (elevación y giro).

Para la iluminación dos pulsadores que funcionan como interruptor. (encienden al pulsar y mantienen pulso hasta volver a pulsar).

En este momento debido a la puesta en práctica, veo necesario realizar todo mediante un arduino maestro (en el mando) y un arduino esclavo (en el robot).

Necesito de vuestro conocimiento para poder implementar esta idea. No se si será posible, porque me estoy volviendo loco y no consigo grandes avances.

Por cierto, quiero emplear 2 Arduino Nano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 16
Ha mantenido su posición en Arduino (en relación al último mes)
Gráfica de Arduino

Ayuda Código Arduino Maestro y esclavo

Publicado por Simonetti (4 intervenciones) el 17/12/2020 09:06:05
voy a empezar con el primer problema.

Encendido de LED1 y LED2. cada uno con un pulsador. No logro que corra.

CODIGO MAESTRO

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <Wire.h>
int Bled1 = A0;
int Bled2 = A1;
int estAC1 = 0;
int estAC2 = 0;
 
void setup(){
  Wire.begin();
  pinMode(Bled1,INPUT);
  pinMode(Bled2,INPUT);
}
 
void loop(){
  Wire.beginTransmission(1);
  estAC1 = digitalRead(Bled1);
  Wire.write(estAC1);
  Wire.endTransmission(1);
  delay(100);
  Wire.beginTransmission(2);
  estAC2 = digitalRead(Bled2);
  Wire.write(estAC2);
  Wire.endTransmission(2);
  delay(100);
}


CODIGO ESCLAVO


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <Wire.h>
#define L1 10
#define L2 11
 
void setup(){
  Wire.begin(1);
  Wire.onReceive(receiveEvent1);
  Wire.begin(2);
  Wire.onReceive(receiveEvent2);
 
  Serial.begin(9600);
  pinMode(L1,OUTPUT);
  pinMode(L2,OUTPUT);
}
 
void loop(){
  delay(100);
}
 
void receiveEvent1(int estAC1){
  int x1 = Wire.read();
 
  if (x1==1) {
  	digitalWrite(L1,HIGH);
  }else{
  	digitalWrite(L1,LOW);
  }
}
 
void receiveEvent2(int estAC2){
  int x2 = Wire.read();
 
  if (x2==1) {
  	digitalWrite(L2,HIGH);
  }else{
  	digitalWrite(L2,LOW);
  }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 16
Ha mantenido su posición en Arduino (en relación al último mes)
Gráfica de Arduino

Ayuda Código Arduino Maestro y esclavo

Publicado por Simonetti (4 intervenciones) el 17/12/2020 10:32:23
estoy consiguiendo algo..... ahora tengo 2 LED funcionando con dos pulsadores... pero quiero hacer que esos dos pulsadores funcionen como interruptor. desde las órdenes de un maestro. Como arduino sencillo lo tengo claro. Pero con las órdenes desde el maestro no funciona como debe.

CODIGO MAESTRO

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <Wire.h>
int Bled1 = 4;
int Bled2 = 5;
 
void setup(){
  Wire.begin(1);
 
  pinMode(Bled1, INPUT_PULLUP);
  pinMode(Bled2, INPUT_PULLUP);
 
 
  Wire.onRequest(iluminacion);
}
 
void iluminacion(){
 
  if(digitalRead(Bled1) == LOW)
    {Wire.write('1');}
 
 else if(digitalRead(Bled2) == LOW)
    {Wire.write('2');}
 
    }
 
 
 
void loop(){
  delay(100);
}



CODIGO ESCLAVO

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <Wire.h>
int Led1 = 11;
int Led2 = 10;
 
int estAC1 =0;
int estAN1 =0;
int estAC2 =0;
int estAN2 =0;
 
void setup(){
  pinMode(Led1, OUTPUT);
  pinMode(Led2, OUTPUT);
 
  Wire.begin();
}
 
void loop(){
  Wire.requestFrom(1, 1);
 
 
  if(Wire.available()>0)
 
  {
    char c = Wire.read();
 
    if(c == '1') {
 
      estAC1 = digitalRead(c);
  		if (estAC1 == 0 && estAN1 == 0) {
    	digitalWrite (Led1, LOW);
        }
        else if (estAC1 == 1 && estAN1 == 0) {
    	digitalWrite (Led1, HIGH);
        }
        else if (estAC1 == 1 && estAN1 == 1) {
    	digitalWrite (Led1, LOW);
        }
      	estAN1 = estAC1;
        delay (100);
      }
 
   if(c == '2') {
 
      estAC2 = digitalRead(c);
  		if (estAC2 == 0 && estAN2 == 0) {
    	digitalWrite (Led2, LOW);
        }
        else if (estAC1 == 2 && estAN2 == 0) {
    	digitalWrite (Led2, HIGH);
        }
        else if (estAC1 == 2 && estAN2 == 1) {
    	digitalWrite (Led2, LOW);
        }
      	estAN2 = estAC2;
        delay (100);
      }
 
  delay(500);
 
  }}



Solo consigo que funcione led1 y solo una sola vez.. luego ya nada
LED2-INTERRUPTOR
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 16
Ha mantenido su posición en Arduino (en relación al último mes)
Gráfica de Arduino

Ayuda Código Arduino Maestro y esclavo

Publicado por Simonetti (4 intervenciones) el 17/12/2020 11:55:55
ya lo tengo... a por el siguiente problema
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar