2023年10月21日土曜日

日本古代史のまとめ

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

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

3世紀は尾張の協力で大和建国(卑弥呼は247年に死亡、トヨの記事266年以降150年は大陸との交流なし 369年に百済より石上神宮の七支刀) 古墳は3世紀中頃より出現!

実在したとすれば崇神(ニギハヤヒ?)は4世紀前半で以後応神以前まで纒向に宮あり

関裕二が同時期という神武と欠史八代は橿原に宮の記載あり、また神功皇后もほぼ同時期という

4世紀に大和が北九州と融和?(吉備と出雲の協力) つまり神武、崇神、応神は同時代?

少なくとも近畿で3世紀末に九州の埋葬文化であった銅鏡が古墳におさめられるようになった

5世紀に瀬戸内航路の安全開拓(雄略天皇) 

景行は4世紀中期、神功皇后が仲哀天皇をみとったのは362年(古事記)

応神〜雄略が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 () {
    
})