Вопрос касательно вывода данных с термопары подключенной к плате ардуино. Она подключается к 3 цифровым портам на ардуино для вывода данных с нее в режиме реального времени и постройки графика (также в реальном времени). Но никак не получается вывести данные, выдает ошибку Код (Python): ValueError: shape mismatch: objects cannot be broadcast to a single shape Код (Python): import sys from matplotlib import pyplot import pyfirmata from time import sleep import tkinter import serial def onStartButtonPress(): while True: if flag.get(): sleep(1) pData.append(float(a0.read())) pData.append(float(a1.read())) pData.append(float(a2.read())) pyplot.ylim([0, 1]) del pData[0] l1.set_xdata([i for i in range(25)]) l1.set_ydata(pData) # update the data pyplot.draw() # update the plot top.update() else: flag.set(True) break # Associate port and board with pyFirmata port = 'COM6' board = pyfirmata.ArduinoMega(port) # Using iterator thread to avoid buffer overflow it = pyfirmata.util.Iterator(board) it.start() # Assign a role and variable to analog pin 0 a0 = board.get_pin('d:7:i') print(a0) a1 = board.get_pin('d:6:i') print(a1) a2 = board.get_pin('d:5:i') print(a2)
я не очень знаю питон, но похоже вы знаете его еще меньше чето какая-то ерунда у вас в коде. Зачем вы чиатете каждый порт дважды? - первый раз выкидываете значения, второй сохраняете. Во-вторых - удаляя нулевой элемент массива pData - чего вы стремитесь достичь? Ну и втретьих, что это за термопара такая, что требует подключения к трем аналоговым портам? - чушь какая-то
насчет считывания портов можно не обращать внимания, осталось со старого кода насчет второго пункта, удаляя нулевой элемент массива pData я хочу избавиться от старых данных в массиве, так как программа должна в реальном времени строить график по новым данным, полученным с термопары насчет третьего пункта, MAX6675, у нее 5 выходов, 2 из которых питание, 3 интерфейс, так что чушь не чушь, но такая термопара
вы, простите, идиот? Вы даташит-то на MAX6675 открывали? https://datasheets.maximintegrated.com/en/ds/MAX6675.pdf Это "термопара", как вы ее назвали - имеет SPI-интерфейс, а вы ее к аналоговым пинам подключили.... пипец... вот типичная схема подключения из даташита - где вы тут аналоговые порты то нашли? данные с чипа приходят в цифровом виде по SPI протоколу. Читать их аналогом так же бесполезно, как пытаться разглядеть файлы на жестком диске в микроскоп
оскорблять не стоит, и где вы увидели что-нибудь про аналоговые порты?"термопара" у меня подключена к цифровым портам, или если у вас есть рекомендации по подключению термопары к mega 2560, то с радостью выслушаю
врать тоже не стоит. Если у вас используются цифровые порты, то опять остается только воскликнуть первое предложение из моего прошлого поста. Даже если б это была обычная термопара - ничего кроме 0 и 1 с цифрового порта вы не прочитали бы. Очень полезная информация с термопары - 0 и 1, правда? Вы именно нули и единички собирались на график выводить? Так что либо вы врете и использовали аналоговые (что видно по названиям "а0" "а1" и тд - либо вообще не понимаете, что делаете. Что касается правильного подключения - то для получения информации по температуре с чипа 6675 к нему надо подключится по SPI по специальному протоколу, который описан в том же даташите.на странице 5. Результат измерения температуры возвращается в виде 12-битного числа, которое надо декодировать Судя по вашим знаниям, самостоятельно вы принять температуру не сможете. Ищите готовую библиотеку.
@b707, это просто не самые удачные имена переменных a0 = board.get_pin('d:7:i') - переменную а0 связывает с D7 input
Хорошо тогда два вопроса: - если у ТС это цифра, зачем он их во флоат переводит? - ну и главное - этот чип имеет интерфейс SPI. Читать значения с его пинов - что в цифре, что в аналоге - без протокола бесполезно.
@shiroi, бегло посмотрел код StandardFirmataPlus и pyfirmata, поэтому могу ошибаться, но я вовсе не увидел там возможности работы с SPI. Что-то есть в ExtendedFirmata, но стыкуется ли она с pyfirmata - не знаю.
а зачем брать значения с тактирующего пина и пина выбора кристалла??? Да и питон настолько непроворотлив, что выводить на экран нолики и единички лишино всяческого смысла. Итог - про питон забыть. Учить СИ.