2023年6月29日木曜日

5v系モータドライバ::single and double

------------------------------------------------------------------------------------------

どうもL293DではIC自体の電源は不要のようだ 次のようにPWMできた Elegoo Code

#define ENABLE 5

#define DIRA 3

#define DIRB 4


int i;

 

void setup() {

  //---set pin direction

  pinMode(ENABLE,OUTPUT);

  pinMode(DIRA,OUTPUT);

  pinMode(DIRB,OUTPUT);

  Serial.begin(9600);

}


void loop() {

  //---back and forth example

    Serial.println("One way, then reverse");

    digitalWrite(ENABLE,HIGH); // enable on

    for (i=0;i<5;i++) {

    digitalWrite(DIRA,HIGH); //one way

    digitalWrite(DIRB,LOW);

    delay(500);

    digitalWrite(DIRA,LOW);  //reverse

    digitalWrite(DIRB,HIGH);

    delay(500);

  }

  digitalWrite(ENABLE,LOW); // disable

  delay(2000);


  Serial.println("fast Slow example");

  //---fast/slow stop example

  digitalWrite(ENABLE,HIGH); //enable on

  digitalWrite(DIRA,HIGH); //one way

  digitalWrite(DIRB,LOW);

  delay(3000);

  digitalWrite(ENABLE,LOW); //slow stop

  delay(1000);

  digitalWrite(ENABLE,HIGH); //enable on

  digitalWrite(DIRA,LOW); //one way

  digitalWrite(DIRB,HIGH);

  delay(3000);

  digitalWrite(DIRA,LOW); //fast stop

  delay(2000);


  Serial.println("PWM full then slow");

  //---PWM example, full speed then slow

  analogWrite(ENABLE,255); //enable on

  digitalWrite(DIRA,HIGH); //one way

  digitalWrite(DIRB,LOW);

  delay(2000);

  analogWrite(ENABLE,180); //half speed

  delay(2000);

  analogWrite(ENABLE,128); //half speed

  delay(2000);

  analogWrite(ENABLE,50); //half speed

  delay(2000);

  analogWrite(ENABLE,128); //half speed

  delay(2000);

  analogWrite(ENABLE,180); //half speed

  delay(2000);

  analogWrite(ENABLE,255); //half speed

  delay(2000);

  digitalWrite(ENABLE,LOW); //all done

  delay(10000);

}

--------------------------------------------------------------------------- tb67h450:rs to picow gnd,vm to 5v supply(+),

vref to 3.3/5v of picow,gnd to picow and 5v supply(-)



from machine import Pin,PWM
import network
import socket
import time
import utime

led = Pin(2,Pin.OUT)
IN1 = Pin(14,Pin.OUT)
IN2 = Pin(15,Pin.OUT)
#IN1=PWM(Pin(1))
#IN2=PWM(Pin(2))
#IN1.freq(100)
#IN2.freq(100)
#max_duty=65025
led.value(1)
time.sleep(2)
led.value(0)

def front():
    led.value(1)
    IN1.value(1)
    IN2.value(0)
    utime.sleep(0.5)
    IN1.value(0)
    IN2.value(0)
    utime.sleep(0.5)
    #IN1.duty_u16(0)
    #for i in range(50,70):
    #  IN2.duty_u16(int(max_duty*i*0.01))
    #  utime.sleep(0.1)    
    #IN1.duty_u16(0)
    #IN2.duty_u16(0)
    #utime.sleep(1)
def back():
    led.value(0)
    IN1.value(0)
    IN2.value(1)
    utime.sleep(0.5)
    IN1.value(0)
    IN2.value(0)
    utime.sleep(0.5)
    #IN2.duty_u16(0)
    #for i in range(50,70):
    #  IN2.duty_u16(int(max_duty*i*0.01))
    #  utime.sleep(0.1)    
    #IN1.duty_u16(0)
    #IN2.duty_u16(0)
    #utime.sleep(1)
   
ssid = 'RPI_PICO_AP'                  
password = '12345678'

# ap code configuration code

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())
#wifi接続
#ssid =  'WifiのID'
#Password = 'Password'

###wlan = network.WLAN(network.STA_IF)
##wlan.active(True)
#wlan.connect(ssid,Password)
#wlan.isconnected()
#while not wlan.isconnected():
#    pass

#Open socket
addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1]
s = socket.socket()
s.bind(addr)
s.listen(1)
print('listening on', ap.ifconfig()[0])  # wlan change to ap fof softap mode

#html
def home_page():
    html = """<html>
    <title>LED ON/OFF</title>
    <center>
    <h>LED ON/OFF</h1>
    <p><a href="/ON"><input type="button" value="ON"></a>
       <a href="/OFF"><input type="button" value="OFF"></a></p>
    </center>
    <html>"""
    return html

while True:
    cl,addr = s.accept()    
    request = cl.recv(1024)
    request = str(request)
    if request.find("/ON") ==6:
        front()
    if request.find("/OFF") ==6:
        back()
    response = home_page()
    cl.send(response)
    cl.close()

:: まずthonnyで電波をとめる、あと、PCのコネクトを閉じる 以後は同様に
  だめなら再起動でreuseaddressをリセット


2023年6月24日土曜日

RasPico/W いろいろ

ラズベリーパイPico Wのセットアップと使い方 | うしこlog (nomaki.jp

たまにEADDRINUSEエラーが表示されることがあります。ここに対処法あり。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

lcd1602成功(2個のライブラリが必要):5vOk、ssd1306成功:3vOk、hcsr04成功5vで入力は分圧必要、ws2812成功:3vOk、bme280は要注意、nrf?、sdcard鬼門

Pin0,Pin1はi2cの0、Pin2,Pin3はi2cの1である 要注意! ピン配置いつもみること
bme280.pyというライブラリがあった ESP32でBME280からデータを取得する(mictopythonを使います) - Qiita これを拝借 sdi->sda,sdo->gnd(x76 default id)
sck->scl の配線でいく 

-----------------------------------------------------------
にあるgithubサンプルコード pico-micropython-examples/pio/pio_ws2812.py at master · raspberrypi/pico-micropython-examples · GitHub をLED個数を手持ちの5!
---------passive buzzerr example-----https://jhalfmoon.com/dbc/2021/05/18/micropython%E7%9A%84%E5%8D%88%E7%9D%A123-%E3%83%A9%E3%82%BA%E3%83%91%E3%82%A4pico%E3%80%81passive-buzzer%E6%8E%A5%E7%B6%9A/
---------------------------------------------------------

【Raspberry Pi Pico W】無線LAN機能の使い方完全ガイド | sozorablog 総論

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

遠隔操作

SoftAccessPoint


PIN0,PIN1はこわれていた(初回半田つけしたやつ)

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

BOOTSELボタンでLチカ

https://qiita.com/relu/items/df977abc4f2b6b2850d5  成功

ビルトインの温度を知るには

https://info.picaca.jp/14899 成功

picozeroではかなり簡略なコードが実現!

picozeroをインストするには、まずpackage managerでpypiサーチして

インストールされたフォルダからpicozero.py,__init__.pyを

picowのルートもしくはlibにいれる

あとは以下のようにして成功した

from time import sleep

from picozero import pico_temp_sensor, pico_led  # GPIO制御用ライブラリ

import machine            # マイクロコントローラー制御用ライブラリ

temp = 0.0

temp = pico_temp_sensor.temp


print(temp)

pico_led.on()

sleep(2)

pico_led.off()

--------------------------------RTC-DS1307---------------------------
codeダウンロードもできる これで成功
ーーーーーーーーーーーーーBLE成功ーーーーーーーーーー

2023年6月21日水曜日

Raspico/W:: ble,servo-pwm,httpd(sta-mode)

 【Raspberry Pi Pico】DCモーターをモータードライバで制御する | メタエレ実験室 (hellobreak.net) PWM制御も詳しい,ただしサーボは

https://qiita.com/SamAkada/items/0f3454fb1e65bec3a94e でないとだめだった

------------------------------------------------------------------------------

BluetoothモジュールでLチカ:PicoWでも成功した

from machine import UART,Pin

import time

led = Pin(7,Pin.OUT)

u = UART(0,9600,tx=Pin(0),rx=Pin(1))

def receiveCommand():

  temp = u.readline()

  if temp is not None:

     temp = str(temp, 'UTF-8')

 return temp

while True:

  cmd = receiveCommand()

  print(cmd)

  if cmd == "a":

    lef.value(1)

    time.sleep(1)

    led.value(0)

  # time.sleep(1) これをいれるとつながらなくなった!要注意!

---------servo pwm ファームウエア更新後Pin0不通 上記参照--------------------

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from machine import PWM, Pin
import time
 
pwm1 = PWM(Pin(0))
pwm1.freq(50)
i = 0;
 
servo1 = PWM(Pin(0))
servo1.freq(50)
 
max_duty = 65025
dig_0 = 0.0725    #0°
dig_90 = 0.12     #90°
dig_m90 = 0.025   #-90°
 
while True :
    servo1.duty_u16(int(max_duty*dig_0))
    time.sleep_ms(1000)
    servo1.duty_u16(int(max_duty*dig_90))
    time.sleep_ms(1000)
    servo1.duty_u16(int(max_duty*dig_0))
    time.sleep_ms(1000)
    servo1.duty_u16(int(max_duty*dig_m90))
    time.sleep_ms(1000)

------------------------------------------------------------------------------------------

https://microcontrollerslab.com/raspberry-pi-pico-w-soft-access-point-web-server-example/:: 成功 sapでない、遠隔操作は

ラズパイPicoW Wi-Fi通信、遠隔操作&表示 MicroPython編 | ロジカラブログ (logikara.blog) などがある