import serialでエラーが出たのでターミナルを使いpipでインストールしようしたらエラー
pip3 install pyserial
Pythonを起動してから実行するとSyntaxErrorが出る。
Pythonを終了させてから実行したら出来た。
import serialでエラーが出たのでターミナルを使いpipでインストールしようしたらエラー
pip3 install pyserial
Pythonを起動してから実行するとSyntaxErrorが出る。
Pythonを終了させてから実行したら出来た。
調べてみたら、JSONファイルに問題があり、シングルクォーテーションをダブルクォーテーションにしたら動きました。
<Python>
import json
from os import path
a = path.join(path.dirname(__file__), 'test.json')
json_open = open(a, 'r')
json_load = json.load(json_open)
print(json_load)
<エラー内容>
Traceback (most recent call last):
File "/Users/xxxx/JSON01.py", line 12, in <module>
json_load = json.load(json_open)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/json/__init__.py", line 293, in load
return loads(fp.read(),
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/json/__init__.py", line 346, in loads
return _default_decoder.decode(s)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/json/decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/json/decoder.py", line 353, in raw_decode
obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 2 column 3 (char 4)
他にも原因はあると思いますが、Macだと変わらなかった。
RaspberryPiだと問題なく動く。
button.config(bg='RoyalBlue3')
Python2では
ser = serial.Serial( "/dev/ttyACM0" , 115200 , timeout = 0.01)
〜〜省略〜〜
received = ser.read_until("k")
str_value = re.sub(r'\D' , '' , received)
num = int(str_value)
で"k"区切りになっていた値を受け取れていたのにPython3では
NameError : name 'received' is not defined
と出る。。。
調べてみたら「python3では、文字列とバイト列の区別が明確になりました。」との事。
どうやらこいつの影響っぽい。
Python2
received = ser.read_until("k")
を
Python3
received = ser.read_until(b'\x6b')#kをbytes型で指定
これだと b'a200k' のような状態なので、これをそのままstr型の文字列に変換して
余計なものを取る。
received = str( ser.read_until(b'\x6b') )
received = received[ 2 : len(received)-1 ]
とっても後味悪い方法に。。
以下、参考にしたサイト
python3のbytes型とstr型の比較と変換方法
Python3での文字列のstr型とbytes型のまとめ
Raspberry Pi と Arduino でUSBシリアル通信(複数の値を送受信)(第二弾)
Raspberry Pi 4 Model B にRTC(DS3231)を繋ぐ。
今回はスイッチサイエンスで購入した
DS3231搭載 高精度RTCモジュール
を使用した。
設定>RaspberryPiの設定>インターフェイス
でi2cを有効にする。
RTCとラズパイを繋ぐ
Vin→3.3V
GND→GND
SCL→SCL(GPIO 3)
SDA→SDA(GPIO 2)
コマンドプロンプトで
i2cdetect -y 1
を実行してi2cアドレスを確認
(0x68だった。)
コマンドプロンプトで
echo ds3231 0x68 | sudo tee /sys/class/i2c-adapter/i2c-1/new_device
を実行し
sudo hwclock -r
で時間が取得出来た。
RTCにラズパイの時間を設定する場合は
sudo hwclock -w
RTCの時間をラズパイに設定する場合は
sudo hwclock -s
インターネット環境がない場所で使う時は起動時にこれを実行するようにする。
echo ds3231 0x68 | sudo tee /sys/class/i2c-adapter/i2c-1/new_device
sleep 1
sudo hwclock -s
参考にしたサイト
Raspberry Pi 3の GPIOに I2C通信方式の RTC リアルタイムクロックを接続する方法
Raspberry PiにRTC(DS1307)を接続
「Raspberry Pi」(ラズベリーパイ)Linuxコマンド集・基本編
いつもありがとうございます。
時間を手動で設定するには
sudo date --set='yyyy/mm/dd hh:mm:ss'
Raspberry Pi 4 Model B(Python3.7.3)でboardモジュールのインストールにつまずいたのでメモ。
import board
を含むプログラムを実行してみたらエラー
あ、モジュールがインストールされていないんだなとコマンドプロンプトで
sudo apt-get install board
「パッケージboardが見つかりません」
と出たのでPipでのインストールに変更
まずはPipをインストール
sudo apt-get install python-pip
pipでboardをインストール
pip install board
しかしプログラムを実行したら再度エラー
ModuleNotFoundError:No module named 'board'
ちゃんとインストールされなかったのかな?と思い
pip install board
を再度実行すると
python2.7/site-packages
の文字が。。
python3用ではなかったみたい。
pip3 install board
を実行したらエラー出なくなりました。
----------
後日adafruitのモジュールを使ってみたら
インストールしたboardじゃなくadafruit-blinkaをインストールしなければならないみたい。
pip3 uninstall board
pip3 install adafruit-blinka_
これでダメなら強制再インストール
私はこれで無事動きました。
sudo python3 -m pip install --force-reinstall adafruit-blinka