2023年4月29日土曜日

Raspi::gpiozero/neopixel/dht11

https://www.denshi.club/parts/2020/11/gpiozero1import-led.html :: gpiozero intro

from gpiozero import LED

from time import sleep,time

led = LED(17)

timeStart=time()

while True:

    led.on()

    sleep(1)

    led.off()

    sleep(1)

    print('time:{0:.3f}'.format(time()-timeStart))

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

https://kats-eye.net/info/2020/05/02/neopixel-2/ ::  neopixel

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

https://www.souichi.club/raspberrypi/temperature-and-humidity/ :: dht11

2023年4月26日水曜日

esp32 :: raqsico / microbit シリアル通信(ESP->MIC,MIC->ESP)

  http://mukujii.sakura.ne.jp/esp2.html :: esp32-wifi-radicon

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

esp32::

void setup(){ Serial.begin(9600); Serial2.begin(9600);}

void loop(){   Serial.println("on"); Serial.println("on"); delay(1000); }

これでonと不明文字が送られる そのため以下のようにせんといかん

microbit::

let d = ""
serial.redirect(
SerialPin.P0,
SerialPin.P1,
BaudRate.BaudRate9600
)
basic.forever(function () {
    d = serial.readUntil(serial.delimiters(Delimiters.NewLine))
    basic.showString(d)
    basic.pause(100)
    basic.clearScreen()
    if (d.includes("on")) { // dはon不明文字となるので。。。
        basic.showIcon(IconNames.Heart)
        basic.pause(200)
        basic.clearScreen()
    }
})
--------------------------------------------------------
Esp32:: esp-uno-bibleのserial_esp32をもちいる
Mic:: これで不明文字は送られなかった よって上記が生きた
serial.redirect(
SerialPin.P0,
SerialPin.P1,
BaudRate.BaudRate9600
)
basic.forever(function () {
    
})
basic.forever(function () {
    serial.writeLine("on")
    basic.showString("on")
    basic.pause(1000)
})


2023年4月24日月曜日

microbit :: keyestudio ks0308 dcmotor-driver-board/

 Keyestudio KS0308でDCモーターを使う | YahboomとKeyestudio micro:bit教材情報 (micro-bit.info)  大枠では、 これを参考にするがpin1,pin2が書いてない!

多分、no-pwm方式の説明だろう、pwm方式にするには

下記にあるようにpin 14だけでなくpin 1,pin 2にも仕込む必要があった 

https://wiki.keyestudio.com/Ks0308_keyestudio_Motor_Drive_Breakout_Board_for_micro_bit メーカーの説明に由来する 要注意だった! 

VMに単3x3つないだらmicrobitの面倒もみてくれた!

基盤をみるとtb015a3/6612fngとあり https://tomosoft.jp/design/?p=10695で

tb6612fngをつかっていたが、どうも同一のドライバのようだ そこにあるコードで

p14,p1,p2の役割が氷解した

----------------double gear box :: 初期設定でp1,p2をアナログ設定が肝心----

radio.onReceivedString(function (receivedString) {
basic.showString(receivedString)
if (receivedString == "f") {
basic.showLeds(`
. . # . .
. # # # .
# . # . #
. . # . .
. . # . .
`)
pins.analogWritePin(AnalogPin.P1, 1023)
pins.digitalWritePin(DigitalPin.P12, 1)
pins.digitalWritePin(DigitalPin.P13, 0)
pins.analogWritePin(AnalogPin.P2, 1023)
pins.digitalWritePin(DigitalPin.P15, 1)
pins.digitalWritePin(DigitalPin.P16, 0)
basic.pause(500)
pins.analogWritePin(AnalogPin.P1, 1023)
pins.digitalWritePin(DigitalPin.P12, 0)
pins.digitalWritePin(DigitalPin.P13, 0)
pins.analogWritePin(AnalogPin.P2, 1023)
pins.digitalWritePin(DigitalPin.P15, 0)
pins.digitalWritePin(DigitalPin.P16, 0)
} else if (receivedString == "b") {
basic.showLeds(`
. . # . .
. . # . .
# . # . #
. # # # .
. . # . .
`)
pins.analogWritePin(AnalogPin.P1, 1023)
pins.digitalWritePin(DigitalPin.P12, 0)
pins.digitalWritePin(DigitalPin.P13, 1)
pins.analogWritePin(AnalogPin.P2, 1023)
pins.digitalWritePin(DigitalPin.P15, 0)
pins.digitalWritePin(DigitalPin.P16, 1)
basic.pause(500)
pins.analogWritePin(AnalogPin.P1, 1023)
pins.digitalWritePin(DigitalPin.P12, 0)
pins.digitalWritePin(DigitalPin.P13, 0)
pins.analogWritePin(AnalogPin.P2, 1023)
pins.digitalWritePin(DigitalPin.P15, 0)
pins.digitalWritePin(DigitalPin.P16, 0)
} else if (receivedString == "t") {
basic.showLeds(`
# # # # .
# . . # .
# . . # .
# . # # #
# . . # .
`)
pins.analogWritePin(AnalogPin.P1, 1023)
pins.digitalWritePin(DigitalPin.P12, 0)
pins.digitalWritePin(DigitalPin.P13, 1)
pins.analogWritePin(AnalogPin.P2, 1023)
pins.digitalWritePin(DigitalPin.P15, 1)
pins.digitalWritePin(DigitalPin.P16, 0)
basic.pause(500)
pins.analogWritePin(AnalogPin.P1, 1023)
pins.digitalWritePin(DigitalPin.P12, 0)
pins.digitalWritePin(DigitalPin.P13, 0)
pins.analogWritePin(AnalogPin.P2, 1023)
pins.digitalWritePin(DigitalPin.P15, 0)
pins.digitalWritePin(DigitalPin.P16, 0)
}
})
radio.setGroup(132)
pins.digitalWritePin(DigitalPin.P14, 1)
basic.showIcon(IconNames.Heart)
basic.forever(function () {
})


2023年4月22日土曜日

オブニズでUART cf RadiconCar

sudo gtktermでaを入れるとledオン繰り返す、

それ以外を入れるとledオフになる

ブロックプログラミングはなかなか奥が深い


<xml xmlns="https://developers.google.com/blockly/xml">

  <variables>

    <variable type="obniz" id="X2:3=S(hsdv0mk{aavHW">obniz</variable>

    <variable type="uart" id=".%hlk#,Mm5h*Z7dI%6zS">uart</variable>

    <variable type="led" id="79BWrnzKI24^:Bb/Ra!]">led</variable>

    <variable id="o{V)0T-nogwYGhu1i))?">in</variable>

  </variables>

  <block type="obniz_connect" id="^u?]:ri|/4RV=L/w7Efp" x="153" y="-117">

    <field name="obniz" id="X2:3=S(hsdv0mk{aavHW" variabletype="obniz">obniz</field>

    <value name="obniz_id">

      <shadow type="text" id="E:ZN0r+(9xl+UFYH+x=b">

        <field name="TEXT">4998-4317</field>

      </shadow>

    </value>

    <next>

      <block type="obniz_parts_uart_wired" id="FZLIe1qMo#uREn]xN?OD">

        <field name="obniz" id="X2:3=S(hsdv0mk{aavHW" variabletype="obniz">obniz</field>

        <field name="uart" id=".%hlk#,Mm5h*Z7dI%6zS" variabletype="uart">uart</field>

        <value name="rx">

          <shadow type="math_number" id="/+YUzj:$]KCP+R_?XFDC">

            <field name="NUM">0</field>

          </shadow>

        </value>

        <value name="tx">

          <shadow type="math_number" id="4*aDd2@}@ZE2);.6bvfl">

            <field name="NUM">1</field>

          </shadow>

        </value>

        <value name="baud">

          <shadow type="math_number" id="5cwV|Cy=1i1#LhtPTm#k">

            <field name="NUM">115200</field>

          </shadow>

        </value>

        <next>

          <block type="obniz_parts_led_wired" id="ROR%8a=dZ~zojZMa^$jq">

            <field name="obniz" id="X2:3=S(hsdv0mk{aavHW" variabletype="obniz">obniz</field>

            <field name="LED" id="79BWrnzKI24^:Bb/Ra!]" variabletype="led">led</field>

            <value name="anode">

              <shadow type="math_number" id="09Xb6qBb4p(r.VHQ]R_0">

                <field name="NUM">2</field>

              </shadow>

            </value>

            <value name="cathode">

              <shadow type="math_number" id="%:_A*2].E(r/Vza1,UDL">

                <field name="NUM">3</field>

              </shadow>

            </value>

            <next>

              <block type="obniz_util_repeat" id=":C}TRf~u[B}QU.,qe?6N">

                <statement name="DO">

                  <block type="obniz_display_clear" id="L?yt@thCaI=J:Fl/Y#}J">

                    <field name="obniz" id="X2:3=S(hsdv0mk{aavHW" variabletype="obniz">obniz</field>

                    <next>

                      <block type="controls_if" id="@Igq53;9FM,Q?~Tp;_ut">

                        <value name="IF0">

                          <shadow type="logic_boolean" id="%_d?-IyrmgSLXjXmHlZ3">

                            <field name="BOOL">TRUE</field>

                          </shadow>

                          <block type="obniz_parts_uart_is_data_exists" id="}E7,!GNOFdjG:^-3)}/I">

                            <field name="uart" id=".%hlk#,Mm5h*Z7dI%6zS" variabletype="uart">uart</field>

                          </block>

                        </value>

                        <statement name="DO0">

                          <block type="variables_set" id="|7Quz8niyqz/c~P#5h@k">

                            <field name="VAR" id="o{V)0T-nogwYGhu1i))?">in</field>

                            <value name="VALUE">

                              <block type="obniz_parts_uart_read_text" id="/8j!H7_p5ln{Y^nu%{Pl">

                                <field name="uart" id=".%hlk#,Mm5h*Z7dI%6zS" variabletype="uart">uart</field>

                              </block>

                            </value>

                          </block>

                        </statement>

                        <next>

                          <block type="controls_if" id="JZ-l(ihNo]wzO]Xjm[Qa">

                            <comment id="undefined" pinned="true" h="97.04547119140625" w="254.3182373046875">aが置き換わらんかぎりここが実行される</comment>

                            <value name="IF0">

                              <shadow type="logic_boolean" id="ya1]93x#Z5;l23DRV_d,">

                                <field name="BOOL">TRUE</field>

                              </shadow>

                              <block type="logic_compare" id="A*Rst1S({_db)Cx=ftXz">

                                <field name="OP">EQ</field>

                                <value name="A">

                                  <shadow type="math_number" id="uVjhnv#_zGMfE1otHpp6">

                                    <field name="NUM">10</field>

                                  </shadow>

                                  <block type="variables_get" id="zElei4aB#Bc7{7%ElH5T">

                                    <field name="VAR" id="o{V)0T-nogwYGhu1i))?">in</field>

                                  </block>

                                </value>

                                <value name="B">

                                  <shadow type="math_number" id="Q~8$@dgt6,]K!VT!{Sj(">

                                    <field name="NUM">10</field>

                                  </shadow>

                                  <block type="text" id="B*1VTMGQF@lGC)8*aaL-">

                                    <field name="TEXT">a</field>

                                  </block>

                                </value>

                              </block>

                            </value>

                            <statement name="DO0">

                              <block type="obniz_parts_led_on" id="p??8Wh.2UqS8RJ-+21PM">

                                <field name="LED" id="79BWrnzKI24^:Bb/Ra!]" variabletype="led">led</field>

                                <next>

                                  <block type="obniz_wait" id="o0gZYo|QcF151C!)o(Qj">

                                    <field name="obniz" id="X2:3=S(hsdv0mk{aavHW" variabletype="obniz">obniz</field>

                                    <value name="time">

                                      <shadow type="math_number" id="brJk7O+$K=YZo875mDHs">

                                        <field name="NUM">500</field>

                                      </shadow>

                                    </value>

                                    <next>

                                      <block type="obniz_parts_led_off" id="luYU224-=6`*0,]N,yL~">

                                        <field name="LED" id="79BWrnzKI24^:Bb/Ra!]" variabletype="led">led</field>

                                      </block>

                                    </next>

                                  </block>

                                </next>

                              </block>

                            </statement>

                            <next>

                              <block type="obniz_wait" id="yA2x}EShij1_*$n.D~p)">

                                <field name="obniz" id="X2:3=S(hsdv0mk{aavHW" variabletype="obniz">obniz</field>

                                <value name="time">

                                  <shadow type="math_number" id="D-}jOcs3cFlnL:q+246q">

                                    <field name="NUM">500</field>

                                  </shadow>

                                </value>

                              </block>

                            </next>

                          </block>

                        </next>

                      </block>

                    </next>

                  </block>

                </statement>

              </block>

            </next>

          </block>

        </next>

      </block>

    </next>

  </block>

</xml>


---------simple radio control car -------------------------------------------------------

https://blog.obniz.com/make/kids-project-simple-rc-car

2023年4月10日月曜日

obniz uart,microbitで無線モータ操作


ブロックでもio2をoffにするとGNDにできる!115200ならいらんげな。。。 あとは簡単。gtktermでは/dev/ttyUSB0を選ぶ必要があった 以上は送る編 ここからは受ける編:gtktermからデータを送るにはsudo gtktermで起動の必要があった また1文字しか送れんので注意

----------------------------------------------------------------------- 無線で操縦するのはマイクロビットがはるかに簡単! 以下で双方向可能 ただし どっちが先にアクティブになるかは不定にて注意!
input.onButtonPressed(Button.Afunction () {
    radio.sendValue("feeling"0)
})
input.onButtonPressed(Button.Bfunction () {
    radio.sendValue("feeling"1)
})
radio.onReceivedValue(function (name, value) {
    if (name == "feeling") {
        if (value == 0) {
            basic.showIcon(IconNames.Happy)
        } else if (value == 1) {
            basic.showIcon(IconNames.Sad)
        } else {
            basic.showIcon(IconNames.No)
        }
    } else {
        basic.showIcon(IconNames.No)
    }
})
radio.setGroup(1)
radio.setFrequencyBand(10)
radio.setTransmitPower(4)

ーーーーーーーーーーーーーーーーーーーーーーーーー まず、マイクロビットを使ってみる 〜電子回路(モータードライバ) | さとやまノート (msr-r.net) でTC78H653FTGモータドライバモジュールをボタン操作してみた input.onButtonPressed(Button.A, function () { basic.pause(1000) motor前進() basic.pause(1000) motor停止() basic.pause(1000) motor後退() basic.pause(1000) motor停止() }) function motor後退 () { pins.digitalWritePin(DigitalPin.P1, 0) pins.digitalWritePin(DigitalPin.P2, 1) } function motor停止 () { pins.digitalWritePin(DigitalPin.P1, 0) pins.digitalWritePin(DigitalPin.P2, 0) } function motor前進 () { pins.digi......