2023年10月21日土曜日

日本古代史のまとめ

 高地性集落の分布は、弥生中期に中部瀬戸内と大阪湾岸に[3]弥生後期に近畿とその周辺部にほぼ限定されている。倭国大乱は弥生末期の2世紀後半。

高地性集落は、古墳時代(3世紀中ごろから6世紀末まで、592年に飛鳥がはじまる)前期には、西日本の広島・鳥取に、北陸の富山・石川・新潟に分布する 

3世紀は尾張の協力で大和建国(卑弥呼は247年に死亡、266年以降150年は大陸との交流なし 369年に百済より石上神宮の七支刀、箸墓は3世紀後半、) 

4世紀に大和が北九州を併呑(吉備と出雲の協力) 5世紀に瀬戸内航路の開拓(雄略天皇) 

実在したとすれば崇神は4世紀前半、景行は4世紀中期、神功皇后は後期、応神〜雄略が5世紀

6世紀に前飛鳥時代が始まる(継体と磐井) 7世紀は飛鳥時代! 8世紀が奈良時代!

ble by picow, julius latest memo

 https://qiita.com/KICKER_VR/items/dd031645d097f18d8c5a picowをペリフェラルにしている


https://fielddesign.jp/technology/ble/blespec_advertise/ ble 一般論 セントラルもあるげな

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

microbitはv2からbleになり(事前の)ペアリング不要と設定して使用 非常に簡単になったが

bluetooth serial terminalでしか操作できんのが不便

----------------julius latest--------------------------------------------------------------------------------------

https://kocoffy.com/iot/post-519/ これが一番ていねい

https://qiita.com/en129/items/31b0f67c1d886df2aef6 :: 4.6で辞書つくり 空白の説明がくわしい

https://qiita.com/chiapis2/items/a2ed64414c9e49b6cb42 音声操作編

https://dk521123.hatenablog.com/entry/37451114 これでgrammerでなくgrammarとしる

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::

input.onButtonPressed(Button.Afunction () {
    radio.sendString("f")
    basic.showLeds(`
        . . # . .
        . # # # .
        # . # . #
        . . # . .
        . . # . .
        `)
})
input.onButtonPressed(Button.ABfunction () {
    radio.sendString("s")
    basic.showIcon(IconNames.Diamond)
})
radio.onReceivedString(function (receivedString) {
    basic.showString(receivedString)
    if (receivedString == "f") {
        basic.showLeds(`
            . . # . .
            . # # # .
            # . # . #
            . . # . .
            . . # . .
            `)
        pins.analogWritePin(AnalogPin.P1602)
        pins.digitalWritePin(DigitalPin.P131)
        pins.digitalWritePin(DigitalPin.P120)
    }
    if (receivedString == "b") {
        basic.showLeds(`
            . . # . .
            . . # . .
            # . # . #
            . # # # .
            . . # . .
            `)
        pins.analogWritePin(AnalogPin.P1543)
        pins.digitalWritePin(DigitalPin.P130)
        pins.digitalWritePin(DigitalPin.P121)
    }
    if (receivedString == "s") {
        basic.showIcon(IconNames.Diamond)
        pins.analogWritePin(AnalogPin.P1576)
        pins.digitalWritePin(DigitalPin.P131)
        pins.digitalWritePin(DigitalPin.P121)
    }
})
input.onButtonPressed(Button.Bfunction () {
    radio.sendString("b")
    basic.showLeds(`
        . . # . .
        . . # . .
        # . # . #
        . # # # .
        . . # . .
        `)
})
radio.setGroup(132)
basic.showIcon(IconNames.Heart)
pins.digitalWritePin(DigitalPin.P141)
basic.forever(function () {
    
})