Skip to main content
added 4 characters in body
Source Link
jsotola
  • 1.6k
  • 2
  • 13
  • 22

One method is to use interrupts with a state machine. Here is a minimal example:

Master

#define pin 10 // connect to slave digital input pin
void setup(){
  pinMode(pin,OUTPUT);
  digitalWrite(pin,LOW);
}

void loop(){
if( // insert your condition to trigger the slave Arduino ){ 
 digitalWrite(pin,HIGH);
 delay(10); // short delay
 digitalWrite(pin,LOW);
 }
}

Slave

#define pin 2 // connect to master digital output "pin"  
unsigned int state;
void setup(){
  pinMode(pin,INPUT);
  state=0;
  attachInterrupt(digitalPinToInterrupt(pin),isr,RISING) // trigger ISR on rising edge of master voltage signal
}

void loop(){
if(state==1){ 
  // your code here     
  state=0;  // reset when done
 }
}

void isr() {
 state=1;
}

Digital interrupts can be done on the Arduino UNO with pins 2,3. Don't forget to also connect a common electrical ground between Arduinos.

One method is to use interrupts with a state machine. Here is a minimal example:

Master

#define pin 10 // connect to slave digital input pin
void setup(){
  pinMode(pin,OUTPUT);
  digitalWrite(pin,LOW);
}

void loop(){
if( // insert your condition to trigger the slave Arduino ){ 
 digitalWrite(pin,HIGH);
 delay(10); // short delay
 digitalWrite(pin,LOW);
 }
}

Slave

#define pin 2 // connect to master digital output "pin"  
unsigned int state;
void setup(){
  pinMode(pin,INPUT);
  state=0;
  attachInterrupt(digitalPinToInterrupt(pin),isr,RISING) // trigger on rising edge of master voltage signal
}

void loop(){
if(state==1){ 
  // your code here     
  state=0;  // reset when done
 }
}

void isr() {
 state=1;
}

Digital interrupts can be done on the Arduino UNO with pins 2,3. Don't forget to also connect a common electrical ground between Arduinos.

One method is to use interrupts with a state machine. Here is a minimal example:

Master

#define pin 10 // connect to slave digital input pin
void setup(){
  pinMode(pin,OUTPUT);
  digitalWrite(pin,LOW);
}

void loop(){
if( // insert your condition to trigger the slave Arduino ){ 
 digitalWrite(pin,HIGH);
 delay(10); // short delay
 digitalWrite(pin,LOW);
 }
}

Slave

#define pin 2 // connect to master digital output "pin"  
unsigned int state;
void setup(){
  pinMode(pin,INPUT);
  state=0;
  attachInterrupt(digitalPinToInterrupt(pin),isr,RISING) // trigger ISR on rising edge of master voltage signal
}

void loop(){
if(state==1){ 
  // your code here     
  state=0;  // reset when done
 }
}

void isr() {
 state=1;
}

Digital interrupts can be done on the Arduino UNO with pins 2,3. Don't forget to also connect a common electrical ground between Arduinos.

Source Link
MichaelT
  • 887
  • 3
  • 8
  • 22

One method is to use interrupts with a state machine. Here is a minimal example:

Master

#define pin 10 // connect to slave digital input pin
void setup(){
  pinMode(pin,OUTPUT);
  digitalWrite(pin,LOW);
}

void loop(){
if( // insert your condition to trigger the slave Arduino ){ 
 digitalWrite(pin,HIGH);
 delay(10); // short delay
 digitalWrite(pin,LOW);
 }
}

Slave

#define pin 2 // connect to master digital output "pin"  
unsigned int state;
void setup(){
  pinMode(pin,INPUT);
  state=0;
  attachInterrupt(digitalPinToInterrupt(pin),isr,RISING) // trigger on rising edge of master voltage signal
}

void loop(){
if(state==1){ 
  // your code here     
  state=0;  // reset when done
 }
}

void isr() {
 state=1;
}

Digital interrupts can be done on the Arduino UNO with pins 2,3. Don't forget to also connect a common electrical ground between Arduinos.