Отправка сигнала Arduino на другой Arduino

pwm

Я работаю над проектом, который состоит из двух разных функций. поскольку Arduino может выполнять только одну функцию, поэтому я решил вместо этого использовать две Arduino. Моя идея заключается в том, что 1-й Arduino выдаст выходные данные, а скетч на 2-м Arduino запустится только после ввода данных от 1-го Arduino. Итак, могу ли я сделать цифровой выход, который будет отправлен на вход второго Arduino?

если возможно, я уже написал код для второго Arduino, который будет запускаться после ввода данных от первого Arduino:

//определяем контакты ввода/вывода
#define FLOAT_SWITCH_PIN 2
#define PUMP_1_PIN 4
#define LED_PIN 7
#define output1starduino 3
//установка запускается один раз
void setup()
{


  pinMode(FLOAT_SWITCH_PIN, INPUT_PULLUP);
  pinMode(output1starduino, INPUT_PULLUP);

  //настраиваем выходные контакты для реле/насосной станции и платы светодиодов
  pinMode(PUMP_1_PIN, OUTPUT);
  pinMode(LED_PIN, OUTPUT);

}

//цикл() работает бесконечно
void loop()
{

  if(digitalRead(output1starduino) == HIGH) // вывод с 1-го Arduino
  if(digitalRead(FLOAT_SWITCH_PIN) == LOW)
  {
     digitalWrite(PUMP_1_PIN, HIGH); //включаем насос
     digitalWrite(LED_PIN, HIGH);    //включаем светодиод
  }


  {
     digitalWrite(PUMP_1_PIN, LOW); //выключаем насос
     digitalWrite(LED_PIN, LOW);    //выключаем светодиод
  }
} 

Как я пишу в строке, «output1starduino» — это цифровой выход первого Arduino. Правильно ли мне написать, если я хочу, чтобы программа запускалась только сразу после вывода данных из 1-го Arduino?

*** это код первого Arduino, который будет отправлен на второй Arduino

int motorPin = 3; // motor pengisian (m1)
int blinkPin = 4; //
int motor1 = 5;// motor pembuangan
int motorklorin = 6;// pam topap 
int switch1 = 2;// switch float
int indicator1 = 7; 
int indicator2 = 8;
int indicator3 = 9;
int output1starduino = 2;
void setup()
{
  pinMode(motorPin, OUTPUT); 
  pinMode(blinkPin, OUTPUT); // penujuk fasa pengisian
  pinMode(motor1, OUTPUT);
  pinMode(motorklorin, OUTPUT); // MOTOR UNTUK topap
  pinMode(switch1, INPUT_PULLUP);// PELAMPONG
  pinMode(indicator1, OUTPUT);// lampu penunjuk fasa pembuangan
  pinMode(indicator2, OUTPUT);// lampu penunjuk topap
  pinMode(indicator3, OUTPUT);// lampu menunggu
  pinMode(output1starduino, OUTPUT); // KELUARAN KE ARDUINO 2
}


void loop()

{
  digitalWrite(motorPin, HIGH); // turn on the motor
  digitalWrite(blinkPin, HIGH); // turn on the LED
  digitalWrite(motor1, HIGH);// on lampu
  digitalWrite(motorklorin,HIGH);
  delay(1000);        // 

  digitalWrite(motorPin, HIGH);  // 
  digitalWrite(blinkPin, HIGH);  // penunjuk fasa pembuangan hidup
  digitalWrite(motor1, LOW);// motor pembuangan jalan (air start turun/pembuangan
  digitalWrite(motorklorin,HIGH);
  delay(180000);        //tempoh pembuangan 

  digitalWrite(motorPin, LOW); // turn on the motor (motorisi balik air jalan/pengisian
  digitalWrite(blinkPin, LOW); // 
  digitalWrite(motor1, HIGH);// filling motor on
  digitalWrite(indicator1, HIGH); //indicator
  delay(150000);        // duration filling


  digitalWrite(motorPin, HIGH);  // turn off the motor
  digitalWrite(blinkPin,HIGH);  // turn off the LED
  digitalWrite(motor1, HIGH);// 
  digitalWrite(output1starduino, HIGH);
  delay(100000);        // multiply by 60000 to translate minutes to milliseconds
  }

, 👍0

Обсуждение

Один Arduino может выполнять множество функций. Мой запрашивает данные через Modbus, рассчитывает и устанавливает ШИМ, делает несколько http-запросов, обслуживает веб-страницы с SD-карты и запросы ajax, обрабатывает 4 реле, считывает датчик тока и датчики температуры, зажигает светодиоды, проверяет кнопку, рассчитывает потребление, пишет события в eeprom, журнал CSV и статистику потребления на карту SC... https://github.com/jandrassy/Regulator/tree/master/Regulator, @Juraj


2 ответа


1

Arduino может быть не таким быстрым, как ПК или телефон, но он действительно ОЧЕНЬ быстрый (16 000 000 операций / сек). Если только код для arduino #1 не невероятно сложен, один arduino должен быть в состоянии сделать все это самостоятельно. P.S. Пожалуйста, выложите код для Arduino #1

,

Я только что отредактировал пост. Не стесняйтесь поставить галочку!, @Asrul Asyraff

Arduino легко справится с этим самостоятельно., @Rowan Radosav - McRae


-1

Объедините их вот так: я переместил дубликаты пинов на другие пины

//определяем контакты ввода/вывода
#define FLOAT_SWITCH_PIN 2
#define PUMP_1_PIN 4
#define LED_PIN 7
#define output1starduino 3

byte motorPin = 11; // моторный пингвин (m1)
byte blinkPin = 12; //
byte motor1 = 5;// двигатель пембуанган
byte motorklorin = 6;//пам топап
byte switch1 = 2;//переключаем число с плавающей запятой
byte indicator1 = 13; 
byte indicator2 = 8;
byte indicator3 = 9;
byte output1starduino = 10;

// установка запускается один раз
void setup()
{

pinMode(FLOAT_SWITCH_PIN, INPUT_PULLUP);
pinMode(output1starduino, INPUT_PULLUP);

//настраиваем выходные контакты для реле/насосной станции и платы светодиодов
pinMode(PUMP_1_PIN, OUTPUT);
pinMode(LED_PIN, OUTPUT);

pinMode(motorPin, OUTPUT); 
pinMode(blinkPin, OUTPUT); // индикатор фазы заряда
pinMode(motor1, OUTPUT);
pinMode(motorklorin, OUTPUT); // МОТОЦИКЛ ДЛЯ топап
pinMode(switch1, INPUT_PULLUP);// PULLUP
pinMode(indicator1, OUTPUT);//индикатор фазы разряда
pinMode(indicator2, OUTPUT);// индикатор топап
pinMode(indicator3, OUTPUT);// свет ожидания
pinMode(output1starduino, OUTPUT); // ВЫВОД НА ARDUINO 2


}

//цикл() работает бесконечно
void loop()
{

if(digitalRead(output1starduino) == HIGH) // вывод с 1-го Arduino
{
digitalWrite(motorPin, HIGH); // включаем мотоцикл
digitalWrite(blinkPin, HIGH); // включаем светодиод
digitalWrite(motor1, HIGH);// свет
digitalWrite(motorklorin,HIGH);
delay(1000);        //

digitalWrite(motorPin, HIGH);  //
digitalWrite(blinkPin, HIGH);  // горит индикатор фазы разряда
digitalWrite(motor1, LOW);// мотор дренажа дороги (пуск воды вниз/слив
digitalWrite(motorklorin,HIGH);
delay(180000);        //период изгнания

digitalWrite(motorPin, LOW); // включаем мотор (мотор для поворота воды, прокачки/налива
digitalWrite(blinkPin, LOW); //
digitalWrite(motor1, HIGH);//заполнение двигателя включено
digitalWrite(indicator1, HIGH); //индикатор
delay(150000);        // заполнение длительности


digitalWrite(motorPin, HIGH);  // выключаем мотор
digitalWrite(blinkPin,HIGH);  // выключаем светодиод
digitalWrite(motor1, HIGH);//
digitalWrite(output1starduino, HIGH);
delay(100000);        // умножаем на 60000, чтобы перевести минуты в миллисекунды
}

if(digitalRead(FLOAT_SWITCH_PIN) == LOW)
{
 digitalWrite(PUMP_1_PIN, HIGH); //включаем насос
 digitalWrite(LED_PIN, HIGH);    //включаем светодиод
}


{
 digitalWrite(PUMP_1_PIN, LOW); //выключаем насос
 digitalWrite(LED_PIN, LOW);    //выключаем светодиод
 }
} 
,

Дублирующиеся контакты могут потребовать дополнительной очистки., @CrossRoads

Почему отрицательный голос?, @CrossRoads