de-vraag
  • Вопросы
  • Метки
  • Пользователи
Оповещения
Вознаграждения
Регистрация
После регистрации, сможете получать уведомления об ответах и комментариях на Ваши вопросы.
Вход
Если у Вас уже есть аккаунт, войдите чтобы проверить новые уведомления.
Тут будут вознаграждения за добавленные вопросы, ответы и комментарий.
Дополнительно
Источник
Редактировать
 shivam
shivam
Вопрос

Как читать данные от Arduino с помощью малины Pi через I2C?

Я подключил модель B малины Pi 2 к Arduino Uno через двунаправленный сдвиг уровня, из этого БЛОГ :

Raspberry pi    GND    ----------   GND     Arduino
                3.3v   ----------   5v
                SCL    ----------   A5
                SDA    ----------   A4

Надеюсь, мое соединение I2C верное.

И мой Arduino подключен к 8-канальной релейной плате.

Теперь я написал код, в котором я могу управлять релейной панелью с помощью малины. Например, если я нажимаю '1', реле 1 идет высоко.

Теперь я хочу отправить данные от Arduino до малины Pi, чтобы перекрестно проверить, действительно ли реле 1 высоко или нет. Если реле 1 высокое, оно должно отправить некоторые данные обратно в малину Pi.

Мой код малины Pi:

import smbus
import time
# for RPI version 1, use "bus = smbus.SMBus(0)"
bus = smbus.SMBus(1)

# This is the address we setup in the Arduino Program
address = 0x04

def writeNumber(value):
    bus.write_byte(address, value)
    # bus.write_byte_data(address, 0, value)
    return -1

def readNumber():
    number = bus.read_byte(address)
    # number = bus.read_byte_data(address, 1)
    return number

while True:
    var = input("")
    if not var:
        continue
    writeNumber(var)
    number = readNumber()

Мой код Arduino:

#include 

#define SLAVE_ADDRESS 0x04
#define RELAY1 9

int number = 0;
int state = 0;

void setup() {
    pinMode(RELAY1, OUTPUT);
    Serial.begin(9600);//start serial for output
   //initialize i2c as slave
    Wire.begin(SLAVE_ADDRESS);
   //define callbacks for i2c communication
    Wire.onReceive(receiveData);
    Wire.onRequest(sendData);
    Serial.println("Ready!");
}

void loop() {
    delay(100);
}

// callback for received data
void receiveData(int byteCount){
    while(Wire.available()) {
       number = Wire.read();
       Serial.print("data received: ");
       Serial.println(number);
        if (number == 1) {
            if (state == 0){
                digitalWrite(RELAY1, HIGH);//set the LED on
                state = 1;
            } else {
                digitalWrite(RELAY1, LOW);//set the LED off
                state = 0;
            }
        }
    }
}

// callback for sending data
void sendData(){
    Wire.write(number);
}

Теперь, если я набираю 1, и из-за какого-то ослабленного соединения 1 реле не поднимается высоко, я хочу, чтобы Arduino принимал данные с платы ретрансляции и отправлял их в малину Pi каждый раз.

Будет здорово, если кто-то также сможет объяснить, как это работает.

Надеюсь, я смог объяснить проблему. Я провел много исследований, но не смог найти ответа.

Я новичок в Python, поэтому, пожалуйста, помогите мне.

Заранее спасибо.

2 2016-03-09T09:55:43+00:00 2
 dda
dda
Редактировал вопрос 2-го июля 2017 в 6:18
Arduino
arduino-uno
python
i2c
raspberrypi
SDsolar
1-го июня 2017 в 9:01
2017-06-01T09:01:59+00:00
Дополнительно
Источник
Редактировать
#56788703

Возможно, вам захочется окончить библиотеку pigpio для Pi.

Здесь вы можете найти примеры того, как это работает.

вот весело, как Wireshark - покажет вам трафик I2C:

https://github.com/joan2937/pigpio/tree/master/ Примеры/C/I2C_SNIFFER

Here is the FAQ about I2C

1
0
NobodySpecial
2-го августа 2017 в 8:40
2017-08-02T08:40:45+00:00
Дополнительно
Источник
Редактировать
#56788704

Символ '1' не является номером 1. Попробуйте «номер == '1». - Микаэль Пател Мар 9 '16 в 11:34

0
0
Похожие сообщества 36
Python
Python
15 512 пользователей
Уютный чат для профессионалов, занимающихся поиском питоньих мудростей. Как не получить бан: https://t.me/ru_python/802295
Открыть telegram
Python beginners
Python beginners
14 284 пользователей
Вопросы про Python для чайников. Cпам и троллинг неприемлем. Частозадаваемые вопросы: https://github.com/ru-python-beginners/faq/blob/master/README.md Правила группы: https://t.me/ru_python_beginners/1649981
Открыть telegram
🐍 Python Stepik Chat
🐍 Python Stepik Chat
7 772 пользователей
Этот уютный чат создан для помощи в решение задач на прекрасном курсе "Поколение Python: курс для начинающих" и не только. Правила: t.me/pythonstepikchat/316777 Чат для оффтопа - t.me/+fqNb78zlQY81NGUy Наш канал - @kimport_this
Открыть telegram
aiogram
aiogram
6 303 пользователей
Repo: https://github.com/aiogram/aiogram Site: https://aiogram.dev Полезная информация: https://t.me/aiogram_ru/168411
Открыть telegram
Python — вакансии и аналитика
Python — вакансии и аналитика
6 048 пользователей
Публикуем вакансии и запросы на поиск работы по направлению Python, Flask и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @golang_jobs, @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs
Открыть telegram
Сообщество Python Программистов
Сообщество Python Программистов
5 858 пользователей
Канал: @pip_install Наши сайты: https://python-scripts.com https://selenium-python.com https://itfy.org Мы в ВК: https://vk.com/open_sourcecode Вакансии: https://t.me/python_scripts_hr
Открыть telegram
Добавить вопрос
Категории
Все
Технологий
Культура / Отдых
Жизнь / Искусство
Наука
Профессии
Бизнес
Пользователи
Все
Новые
Популярные
1
Roxana Elizabeth CASTILLO Avalos
Зарегистрирован 1 день назад
2
Hideo Nakagawa
Зарегистрирован 2 дня назад
3
Sergiy Tytarenko
Зарегистрирован 4 дня назад
4
shoxrux azadov
Зарегистрирован 6 дней назад
5
Koreets Koreytsev
Зарегистрирован 1 неделю назад
JA
© de-vraag 2022
Источник
arduino.stackexchange.com
под лицензией cc by-sa 3.0 с атрибуцией