2023年12月29日金曜日
ATpedia,esp01/01sでAT
2023年12月25日月曜日
esp01/wroom2 AT and LUA and arduinoIDE
USB ESP-01 Programming Adapter: A Step-by-Step Guide - (edgemicrotech.com)
これでATfirmware,ArduinoIDEいずれも書き込みOK
--------------------------------------------
ESP8266にNodeMCUをアップロードしてHello Worldする #Lua - Qiita
これを展開実行かってにinternal nodemcuとなるのでesp01ではconfigで1Mだけ書き直し
あとは3.3vの設定でftdiにて書き込む(このさいgpio-zeroはGNDにおとしておく)
終了後はGPIO-0はとる Cool termであそぶには、以下の配線を参考にした
ESP8266のファームウェアをWindowsからアップロードする #ESP8266 - Qiita
でnodemcu-flasherはluaしかかきこめず,悪評だったflash download toolsで115200
ボーで当該BINの書き込みに成功してAT復活した しかも実用本のwifi-connectで
getLocalIPも成功になった! ファームウエアが古かったためのようだ
--------------------------------------------------------------
wroom2のばあい、RSTーPRGMの順にリリースしてflasherで書き込み!
jdkインストのあとReleases · 4refr0nt/ESPlorer (github.com)でzipを手に入れ
esplorer.shをチョンチョンすると立ち上がる あとはesp826-4mbyteのRST押して
ESPlorer-NodeMCUのLuaソフト開発 | TomoSoftでOPENでつなぐ
-----------------------------------------------------------------------------
wroom2をarduinoIDEでつかうのは秋月に詳しいPDFあり!
2023年12月20日水曜日
avr deep zone(2313)
AVRでのタイマとPWMの使い方 | うしこlog (nomaki.jp) も参考に
#include <avr/io.h> // なくてもうごいたが
void setup(){
TCCR1A=0b10100001; // 8ビット高速PWM動作
TCCR1B=0b00001011; // clkI/O/64 (64分周)
// 7,11ピンの49
OCR1A=0; // 初期化
OCR1B=0;
pinMode(12,OUTPUT); //
pinMode(13,OUTPUT);
}
// analogWrite()を使うときは、pinMode()を
void loop() {
analogWrite(11,127); // timer0 A
analogWrite(7,0); // timer0 B
OCR1A=127; // timer1 A デューティ比 50%(0~255)
OCR1B=0;
delay(500);
analogWrite(11,0); // timer0 A
analogWrite(7,0); // timer0 B
OCR1A=0;
OCR1B=0;
delay(500);
analogWrite(11,0); // timer0 A
analogWrite(7,127); // timer0 B
OCR1A=0;
OCR1B=127;
delay(500);
analogWrite(11,0); // timer0 A
analogWrite(7,0); // timer0 B
OCR1A=0;
OCR1B=0;
delay(500);
}
以下ATtinyCoreより抜粋。
PWM周波数
F_CPU:8MHz F_PWM TC0:8/64/256= 488Hz F_PWM TC1:8/64/256= 488Hz
TC0 は常に高速 PWM モードで実行されます。 ミリ秒には TC0 を使用しますが、位相補正モードはミリ秒タイマーでは使用できま
トーンサポート
Tone() は Timer1 を使用します。最良の結果を得るには、ピン PB3 (12) または PB4 (13) を使用します。これは、割り込みを使用する代わりにハードウェア
このコードは確かArduinoで書くとタイマ1が動かないとい
そこでタイマ0はArduino、タイマ1はレジスタを直接制御
つまりデューティー比50%ならOCR1A=127; またはOCR1A=0b01111111;(OCR1AL=0b
「TCCR1Aはtimer0 8bit」はタイマ1高速PWM8ビットの事かと思います。
うまく説明できたかどうか、よろしくお願いします。
2023年12月12日火曜日
phpサーバ,Esp01and01s
https://macoblog.com/php-localserver/ 簡単なphpのみのローカルサーバ
-----------------------------------------------------------------------------
ESP-01 vs ESP-01S: Which one is right for you? (best-microcontroller-projects.com)
ITEA-weeEsp8266は両方うごいた
ArduinoEspATは前者はうごいた、後者は未経験 このモジュールはGETのみ実装
Arduino_HttpClient_ESP8266_AT-master、両者未経験、Postも実装していた
このサイトを拾い読みすると色々のっていて有益 ep01関係でサーチすると一覧でる
2023年11月29日水曜日
johnny-five,raspberry pi etc、winからssh失敗のとき
dolittleからアルディーノ的なnodeなやつをみつけた
JavaScriptとArduinoではじめるIoT入門 〜Johnny-Fiveを使ってみる〜 | 株式会社LIG(リグ)|DX支援・システム開発・Web制作 (liginc.co.jp)
このサイトのサンプルは不完全だったJavaScript Robotics: LED with Johnny-Fiveで成功
--------------------------------------------------------
for /l %i in (0,1,255) do ping -w 1 -n 1 192.168.3.%i
2023年11月23日木曜日
microbit and raspi、thingsspeak、esp01(pico,uno)、
WiFi Web Server on BBC micro:bit and ESP-01 (ESP8266) - Hackster.io でけた!
192.168.4.1でLEDオンオフできそうだ ATバシバシコード
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
-------------microbit and raspi uart com -----------------------------------------------
Rapberry PiとBBC Micro:bitでUARTを試す - saitodev.co あっさり成功
ーーーーーーthingspeakーーーーーーーーーーーーーーーーーーーーーーーーーーー
データを簡単に保存&グラフ化できるThingSpeakが便利! - iwathiの/var/log (hatenablog.com) これはブラウザのget機能をもちいた方法であった
ThingSpeakに登録してcurlでデータを送ってグラフを表示するまで #curl - Qiita このcurlはウィンドウズのではだめでリナックスでのでOKだった
センサーの計測値をクラウドにためて見てみる | SG Labs これのcurlはpost仕様だった
例題として以下を試行。。。。宿題
ESP32 Publish Sensor Readings to ThingSpeak (easiest way) | Random Nerd Tutorials
ちなみにmicrobitではgroveという拡張機能のUartWiFiをもちいて成功!
ーーーーesp01 2kindーーーーーーーuno,pico ok ーーーーーーーーーーーーーーーー
amazonから購入した4pinアダプタ方式esp01は通常とちがい、Unoにブランクコードをいれ
rx->rx,tx->txでつなぐとATがうごいた AC電源から電圧変換して5vでうごいた!
もうひとつのesp01sは3vでうごく!
---------------------for arduinoUNO -------------------------------------------
以下のコードはEsp01のRxをUnoの3pin,TxをUnoの2pinにして動いた!
ifttt line連携もばっちりだった
#include "ArduinoESPAT.h" // rx 2 tx 3であったので辻褄はあう
ESPAT espat("184F32CF8BF3-2G","2215085363556");
void setup(){
Serial.begin(115200);
if(espat.begin()){
Serial.println("Initialize Ok");
}else{
Serial.println("Initialize Fail");
}
if(espat.changeMode(1)){
Serial.println("Mode OK");
}else{
Serial.println("Mode not OK");
}
if(espat.tryConnectAP()){
Serial.println("Connected");
}else{
Serial.println("Connect Failed");
}
Serial.println(espat.clientIP());
Serial.println(espat.get("www.yahoo.co.jp", "/", 80));
//ここはエラーになるのでhttpなサイトをさがそう
Serial.println("Finished");
}
void loop(){
}
------------------for pico ----------------------------------------------
https://microcontrollerslab.com/esp8266-wifi-module-raspberry-pi-pico-web-server/
上記のパチモンつかうので5VとGNDをACアダプタからとり、あとはGNDを共通化して
picoの1番がTX、2番がRXなのでesp01のRx、esp01のTxとつなぐ Unoと一緒でクロス
SSID,PWDを自分のネットにする! コレハバッチリ!
2023年11月17日金曜日
esp32-cam still-film to sdcard, Line 各機種で(宿題あり)
https://randomnerdtutorials.com/esp32-cam-take-photo-save-microsd-card/
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
LINE各機種で
-------obniz --------------------------------------------------------
https://toyoshi.hatenablog.com/entry/2020/01/18/123904 成功(node.js)
Node.js経由でRaspberryPiやObnizからLINEへの通知を行ってみる - uepon日々の備忘録 (hatenadiary.com) これは参考
---------esp32 and jpg---------------------------------------------------------
ESP32とOV2640でJPEG画像をLINE通知【④プログラム】 | IT太郎の趣味ルーム (it-taro.com) これ宿題
-------------esp32-----------------------------------
https://www.ekit-tech.com/?p=3434 あっさり成功
ーーーーーーーーーーーーーーーーーー
まずラズパイで写真から
# 通知をLINEに挿入 --- (*2)
TOKEN='qmapg2FRrm4gt1V9Qfupz6eIAa05jDTNAw7xoGIU31Q'
API = 'https://notify-api.line.me/api/notify'
import requests
fname='./image.jpg'
post_data = {'message': '侵入者アリ'}
headers = {'Authorization': 'Bearer ' + TOKEN}
files={'imageFile': open(fname,'rb')}
requests.post(API, data=post_data,headers=headers,files=files)
import requests
url = "https://notify-api.line.me/api/notify"
token = "トークン"
headers = {"Authorization" : "Bearer "+ token}
message = "そぞら@プログラミングに夢中すぎる会社員より"
payload = {"message" : message}
r = requests.post(url, headers = headers, params=payload)
ーーーーーーつぎはラズピコwでーーーーーーーーーーーーーーーーーーーーーーーー
https://zenn.dev/iot101/articles/d8e26ac7be133b を参考にlinenotify.pyをいれてから
import machine
from time import sleep
import network, urequests
ssid = '184F32CF8BF3-2G'
password = 'パスワード'
def connect():
#Connect to WLAN
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(ssid, password)
while wlan.isconnected() == False:
print('Waiting for connection...')
sleep(1)
print(wlan.ifconfig())
connect()
from linenotify import LineNotify
# Line token
TOKEN = "qmapg2FRrm4gt1V9Qfupz6eIAa05jDTNAw7xoGIU31Q"
# Make instance
line = LineNotify(TOKEN)
# Send text message
print("テキスト送信中")
result = line.notify('こんにちは。Line Botです。')
print("result:", result)
# Show sticker/stamp
print("スタンプ送信中")
result2 = line.notifySticker(3,230,'これはスタンプです。')
print("result2:", result)
2023年11月5日日曜日
picow-radicon,HC05 with microbit,flask rasdicon code,
## raspberry pi pico w wifi code :: # is softap, hard code is station mode
from machine import Pin,PWM
import network
import socket
import utime
# LED = machine.Pin("LED",machine.Pin.OUT) #builtin led
IN1 = PWM(Pin(14))
IN2 = PWM(Pin(15))
IN1.freq(100)
IN2.freq(100)
IN3 = PWM(Pin(16))
IN4 = PWM(Pin(17))
IN3.freq(100)
IN4.freq(100)
#IN1 = Pin(14,Pin.OUT)
#IN2 = Pin(15,Pin.OUT)
#IN3 = Pin(16,Pin.OUT)
#IN4 = Pin(17,Pin.OUT)
max_duty = 65025
# from metaele labo site
def stop():
IN1.duty_u16(0)
IN2.duty_u16(0)
IN3.duty_u16(0)
IN4.duty_u16(0)
utime.sleep(0.5)
#IN1.value(0)
#IN2.value(0)
#IN3.value(0)
#IN4.value(0)
#utime.sleep(0.5)
def front():
IN1.duty_u16(int(max_duty*0.5))
IN2.duty_u16(0)
IN3.duty_u16(int(max_duty*0.5))
IN4.duty_u16(0)
#IN1.value(1)
#IN2.value(0)
#IN3.value(1)
#IN4.value(0)
utime.sleep(0.5)
stop()
def back():
IN1.duty_u16(0)
IN2.duty_u16(int(max_duty*0.5))
IN3.duty_u16(0)
IN4.duty_u16(int(max_duty*0.5))
#IN1.value(0)
#IN2.value(1)
#IN3.value(0)
#IN4.value(1)
utime.sleep(0.5)
stop()
def left():
IN1.duty_u16(int(max_duty*0.5))
IN2.duty_u16(0)
IN3.duty_u16(0)
IN4.duty_u16(int(max_duty*0.5))
#IN1.value(1)
#IN2.value(0)
#IN3.value(0)
#IN4.value(1)
utime.sleep(0.5)
stop()
def right():
IN1.duty_u16(0)
IN2.duty_u16(int(max_duty*0.5))
IN3.duty_u16(int(max_duty*0.5))
IN4.duty_u16(0)
#IN1.value(0)
#IN2.value(1)
#IN3.value(1)
#IN4.value(0)
utime.sleep(0.5)
stop()
#ssid = 'RPI_PICO_AP'
#password = '12345678'
ssid = '184F32CF8BF3-2G'
password = '2215085363556'
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(ssid, password)
while wlan.isconnected() == False:
print('Connecting to Wi-Fi router')
utime.sleep(1)
wlan_status = wlan.ifconfig()
print('Connected!')
print(f'IP Address: {wlan_status[0]}')
print(f'Netmask: {wlan_status[1]}')
print(f'Default Gateway: {wlan_status[2]}')
print(f'Name Server: {wlan_status[3]}')
#ap = network.WLAN(network.AP_IF)
#ap.config(essid=ssid, password=password)
#ap.active(True) #activating
#while ap.active() == False:
# pass
#print('Connection is successful')
#print(ap.ifconfig())
# print('listening on', ap.ifconfig()[0]) # wlan change to ap fof softap mode
addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1]
s = socket.socket()
s.bind(addr)
s.listen(1)
#html
def home_page():
html = """<html>
<title>Tank Control</title>
<center>
<h>Tank Control</h1>
<p>
<a href="/front"><input type="button" value="front"></a>
<a href="/back"><input type="button" value="back"></a>
</p>
<p>
<a href="/right"><input type="button" value="right"></a>
<a href="/left"><input type="button" value="left"></a>
</p>
</center>
<html>"""
return html
while True:
cl,addr = s.accept()
print("req from = ")
print(addr)
request = cl.recv(1024)
request = str(request)
if request.find("/front") ==6:
front()
if request.find("/back") ==6:
back()
if request.find("/right") ==6:
right()
if request.find("/left") ==6:
left()
response = home_page()
cl.send(response)
cl.close()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Arduinoを使いBluetooth通信をやってみる!HC-05/HC-06 Bluetoothモジュールの使い方! | ぶらり@web走り書き (burariweb.info) 総論
micro:bitとつなぐにはswitch scienceのi2cロジック変換を用いてTX,RXをクロス接続
5Vと3Vの接続は不要だった HC05のGNDはmicrobitのGNDに直付けする
ーーーーーーーーーーーーーー templates/main.html ------------------------------
<html><head><title>Current Status</title></head>
<body>
<h1>Device Listing and Status</h1>
{% for pin in pins %}
{% if pins[pin].name == "for-back": %}
<p>The {{ pins[pin].name }}</br></br>
(<a href="/{{pin}}/for">forward</a>)
(<a href="/{{pin}}/back">backward</a>)</br>
</p>
{% elif pins[pin].name == "left-right": %}
<p>The {{ pins[pin].name }}</br></br>
(<a href="/{{pin}}/left">left</a>)
(<a href="/{{pin}}/right">right</a>)</br>
</p>
{% endif %}
{% endfor %}
{% if message %}
<h2>{{message}}</h2>
{% endif %}
</body></html>
------------------------- weblamp-radicon.py --------------------------------
だいぶ論理が冗長なので将来変更しようと思う
from gpiozero import LED, Motor
from time import sleep
from flask import Flask, render_template, request
app = Flask(__name__)
motor = Motor(forward=19, backward=26,pwm=True)
motor2 = Motor(forward=12, backward=16,pwm=True)
pins = {
23 : {'name' : 'for-back'},
25 : {'name' : 'left-right'}
}
led23 = LED(23)
led23.off()
led25 = LED(25)
led25.off()
@app.route("/")
def main():
templateData = {
'pins' : pins
}
return render_template('main.html', **templateData)
@app.route("/<changePin>/<action>")
def action(changePin, action):
changePin = int(changePin)
deviceName = pins[changePin]['name']
if action == "for":
if changePin == 23:
led23.on()
motor.forward(0.3)
motor2.forward(0.3)
sleep(2)
motor.stop()
motor2.stop()
message = "Turned " + deviceName + " to for."
if action == "back":
if changePin == 23:
led23.off()
motor.backward(0.3)
motor.backward(0.3)
sleep(2)
motor.stop()
motor2.stop()
message = "Turned " + deviceName + " to back."
if action == "left":
if changePin == 25:
led25.on()
motor.forward(0.3)
motor2.backward(0.3)
sleep(2)
motor.stop()
motor2.stop()
message = "Turned " + deviceName + " to left."
if action == "right":
if changePin == 25:
led25.off()
motor.backward(0.3)
motor2.forward(0.3)
sleep(2)
motor.stop()
motor2.stop()
message = "Turned " + deviceName + " to left."
templateData = {
'message' : message,
'pins' : pins
}
return render_template('main.html', **templateData)
if __name__ == "__main__":
app.run(host='0.0.0.0', port=80, debug=True)
2023年11月3日金曜日
pwm ,webiopi,gpiozero,picozero,timer-hard-int,i2c7segment
https://vefortec.hatenablog.com/entry/raspberrypi-webiopi 64bitOSでも成功
ただしBBKSのそれは難解だ。。。
----------------------------------------------------
https://gpiozero.readthedocs.io/en/stable/api_output.html :: drv8833 OK
from gpiozero import Motor
from time import sleep
motor = Motor(forward=19, backward=26,pwm=True) #PWM 0~1が可能に!
while True:
motor.forward(0.2)
sleep(2)
motor.forward(0.9)
sleep(0.5)
print("f")
motor.stop()
sleep(1)
motor.backward()
sleep(0.5)
print("b")
motor.stop()
sleep(1)
Raspberry PiのハードウェアPWMをpigpioで出力する #RaspberryPi - Qiita
【 第33回 】pigpioにはハードウェアPWM発生関数”hardware_PWM”もあった! | FABSHOP.JP -デジタルでものづくり! ファブショップ ! この2個のサイトでbbks理解!
------------picozero----------------------------------------------
https://picozero.readthedocs.io/en/latest/recipes.html :: gpiozero相当品
----------------------------------------------------------------------------------
https://tech-and-investment.com/raspberrypi-pico-14-gpio-interrupt/ ::
通常のやつだがスイッチをpull-downでつかうので制限抵抗必須!
MicroPython的午睡(25) ラズパイPico、Timer周波数設定の上限? | デバイスビジネス開拓団 (jhalfmoon.com) これがタイマー割り込みのようだ たぶんesp32でも一緒
------------------------------------------------------------
https://iot.keicode.com/arduino/arduino-tm1637.php :: 7seg-i2c at arduinoだがラズパイでするには
2023年10月21日土曜日
日本古代史のまとめ
高地性集落の分布は、弥生中期に中部瀬戸内と大阪湾岸に[3]、
高地性集落は、古墳時代(3世紀中ごろから6世紀末まで、592年に飛鳥がはじまる)前期
3世紀は尾張の協力で大和建国(
実在したとすれば崇神(ニギハヤヒ?)は4世紀前半で以後応神以前まで纒向に宮あり、
関裕二が同時期という神武と欠史八代は橿原に宮の記載あり、また神功皇后もほぼ同時期という
4世紀に大和が北九州と融和?(吉備と出雲の協力) つまり神武、崇神、応神は同時代?
少なくとも近畿で3世紀末に九州の埋葬文化であった銅鏡が古墳におさめられるようになった
5世紀に瀬戸内航路の安全開拓(雄略天皇)
景行は4世紀中期、神功皇后が仲哀天皇をみとったのは362年(古事記)、
応神〜雄略が5世紀(倭の五王) 河内王朝として河内湖の干拓と巨大古墳
6世紀に前飛鳥時代が始まる(継体と磐井)
7世紀は飛鳥時代! 8世紀が奈良時代!
ble by picow, julius latest memo
https://qiita.com/KICKER_VR/
2023年10月9日月曜日
radicon-car-esp32, ラズピコのサーボ位置決め など
TB1622FNGのピン配置
PWMA 12,AIN1 13,AIN2 14, STBY 3V3, GND TO ESP32
VM FROM 5V-BATTERY,VCC 5V,GND FROM 5V-BATTERY,GND TO ESP32
https://404background.com/circuit/tb6612fng/#%E5%9B%9E%E8%B7%AF%E3%82%92%E7%B5%84%E3%82%80 に詳しい説明があるがアルディーノUNO用にて注意
#include <ESP32Servo.h> // pwm freq 50hz固定
#include <BluetoothSerial.h>
// 定数の定義
#define SERVO 5 // MG996R アルディーノではpwm可能なPIN必須
#define PWMA 12 // TB6612FNGのPWMA アルディーノではpwm可能なPIN必須
#define AIN1 13 / TB6612FNGのAIN1
#define AIN2 14 // TB6612FNGのAIN2
#define LEDC_CHANNEL 6 // PWMのチャンネル for dcmotor
#define LEDC_BASE_FREQ 10000 // PWMの周波数 for dcmotor
#define MAX_SPEED 3 // 速度の最大値
#define MIN_SPEED -1 // 速度の最小値
#define ANGLE_STEP 6 // 角度の増分
#define ANGLE_MAX 18 // 角度の最大値
// Bluetoothシリアルにつける名前
const char *btname = "ESP32Car";
// MG996Rの角度調整
const int servo_offset = -5;
// 速度・角度 を保存するグローバル変数
int speed = 0;
int angle = 0;
// MG996RとBluetoothシリアルに対応するグローバル変数
Servo myServo;
BluetoothSerial SerialBT;
void setup() {
// Bluetoothシリアルの初期化
SerialBT.begin(btname);
// PWMの初期化
ledcSetup(LEDC_CHANNEL, LEDC_BASE_FREQ, 8);
// チャンネル指定と周波数、分周ビットの指定 8ビットなら0から255
ledcAttachPin(PWMA, LEDC_CHANNEL); //上記チャンネルをPINに紐付け
// MG996Rの初期化
myServo.attach(SERVO); // MG996Rのピン番号を指定
myServo.write(90 + servo_offset);
// GPIOピンの初期化
pinMode(PWMA, OUTPUT);
pinMode(AIN1, OUTPUT);
pinMode(AIN2, OUTPUT);
}
void loop() {
// Bluetoothシリアルから文字を読み込んで処理する
read_bt();
// モーターを操作する
operate_motor();
}
// Bluetoothシリアルから文字を読み込んで処理する
void read_bt() {
// Bluetoothシリアルから文字を受信しているかどうかを判断する
if (SerialBT.available()) {
// Bluetoothシリアルから1文字読み込む
int ch = SerialBT.read();
// 文字が「e」の場合
if (ch == 'e') {
// speedがMAX_SPEEDより小さければ1増やす(加速)
if (speed < MAX_SPEED) {
speed++;
}
}
// 文字が「x」の場合
else if (ch == 'x') {
// speedがMIN_SPEEDより大木れば1減らす(減速)
if (speed > MIN_SPEED) {
speed--;
}
}
// 文字が「d」の場合
else if (ch == 'd') {
// angleがANGLE_MAXより小さければANGLE_STEPだけ増やす(ハンドルを右に切る)
if (angle < ANGLE_MAX) {
angle += ANGLE_STEP;
}
}
// 文字が「s」の場合
else if (ch == 's') {
// angleが-ANGLE_MAXより大きいければANGLE_STEPだけ減らす(ハンドルを左に切る)
if (angle > -ANGLE_MAX) {
angle -= ANGLE_STEP;
}
}
// 文字が「i」の場合
else if (ch == 'i') {
// モーターを止め、ハンドルを中心に戻す
speed = 0;
angle = 0;
}
}
}
// モーターを操作する
void operate_motor() {
// speedがプラス
if (speed > 0 ) {
// モーターを正転させる
digitalWrite(AIN1, HIGH);
digitalWrite(AIN2, LOW);
}
// speedがマイナスの場合
else if (speed < 0) {
// モーターを逆転させる
digitalWrite(AIN1, LOW);
digitalWrite(AIN2, HIGH);
}
// その他の場合
else {
// モーターを止める
speed = 0;
digitalWrite(AIN1, LOW);
digitalWrite(AIN2, LOW);
}
// モーターの回転速度を決める ledcWriteはアルディーノではanalogWriteに相当
ledcWrite(LEDC_CHANNEL, 30 + 40 * abs(speed));
// MG996Rの角度を決める
myServo.write(90 + angle + servo_offset);
}
ラズピコは以下の通り まずdig_0でニュートラルにホーンをとりつける
あとは(+)(ー)で左右に振る!
from machine import PWM, Pin
import time
IN1=Pin(1,Pin.OUT)
IN2=Pin(2,Pin.OUT)
servo1 = PWM(Pin(28))
servo1.freq(50)
dig_0 = 0.0725 #0° almost 4700
dig_90 = 0.12 #90° almost 7800
dig__90 = 0.025 #-90° almost 1600
max_duty = 65025
while True:
#servo1.duty_u16(int(max_duty*dig_90))
servo1.duty_u16(6000)
print("40")
time.sleep(3)
servo1.duty_u16(int(max_duty*dig_0))
print("0")
time.sleep(3)
#servo1.duty_u16(int(max_duty*dig__90))
servo1.duty_u16(3000)
print("-40")
time.sleep(3)
2023年10月6日金曜日
httpd by c, dcm-boad on micricobit
https://daeudaeu.com/c-http-server/
-------------------------------------------------------------------------------
dcm-driver-boad::