Малиновые контакты GPIO для активации ISR на Arduino - PullRequest
0 голосов
/ 07 мая 2018

Я работаю над проектом, и в идеале я хотел бы запустить и остановить цикл Arduino с Raspberru PI. Идея состоит в том, чтобы отправить сигнал с выводов Raspberry PI GPIO на выводы и триггер Arduino и ISR следующим образом:

volatile bool start = false;

void start(){
  start = true;
}
void stop(){
  start = false;
}

void setup(){
  pinMode(2, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(2), start, RISING)
  pinMode(3, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(3), stop, RISING)
}

void loop() {
  if (start) {
    //Do my stuff here...   
    }
 } 

Любая помощь, как я могу сделать это из приложения C ++, которое принимает аргумент (начало или остановка, 1 или 0)? Или, может быть, с Python?

Я решил специально установить два разных контакта. Я знаю, что мы могли бы установить только один вывод и заставить его работать как триггер с функцией «start =! Start», однако таким образом у меня будет один вывод, который всегда будет запускать (или продолжать) arduino, а другой - останавливаться ( или убедитесь, что arduino остановлен).

Одна из моих главных проблем заключается в том, что я не знаю, как установить соединения между двумя платами (один кабель для каждой пары контактов или нам также нужно заземление?). Какой тип импульса будет более подходящим для малинового ИП? Я также знаю, что Arduino работает на 5 В, а Raspberry Pi на 3,3 В. Должны ли мы подключить сопротивление последовательно, чтобы избежать перенапряжения?

Спасибо за любые советы или библиографию, которые вы можете предоставить, Alexis

1 Ответ

0 голосов
/ 10 мая 2018

Что касается вашего беспокойства по поводу проблем с напряжением: я бы сначала решил это, потому что это должно быть установлено, прежде чем что-то еще сработает.

Действительно, напряжение на Raspberry Pi составляет 3,3 вольт, а , как правило, на Arduinos, составляет 5,0 В логика. Доступны преобразователи уровня напряжения, которые преобразуют 3.3. до 5.0 и обратно. Вы можете получить их из общих источников, таких как Adafruit или Sparkfun. Конкретно имя

** 4-канальный I2C-безопасный двунаправленный преобразователь логического уровня - BSS138 $ 4.00 **

Here's an example of a 5V arduino (lilypad) talking to Rasp.PI Вы можете установить связь между двумя устройствами, используя это простое устройство. (Показана версия Sparkfun).

В качестве альтернативы и, возможно, проще было бы купить Arduino, который может работать при напряжении 3,3 Вольт. Они доступны из Китая на eBay и имеют переключатель, который позволяет вводу / выводу Arduino 5 или 3,3 В.

Можно использовать резисторы для управления преобразованием уровня. Возможно, вы захотите рассмотреть это решение, если у вас есть навыки для его разработки.

...