2025年6月24日火曜日

FY25 Raspi 立ち上げ

 久しぶりのRPIの立ち上げになります。

  1. 標準的と思われるイメージで作りました。

  2. SDを入れて起動。
    画面を繋げました。
  3. Wifiを繋げて。
  4. 次は固定IP化
    1. デフォルトのWi-Fiの設定にはNetworkManagerというものを使うようにOS自体が変更になったようです。そのためIP固定の設定方法も大きく変わっていたとのことでした。
    2. ipaddressはifconfigで確認できる。
    3. デフォルトゲートウェイは routeで確認できる。
    4. DNSサーバーの情報が表示されます。また、cat /etc/resolv.conf
    5. 結局 GUIからマニュアル設定を実施。
  5. 日本語化 sudo apt-get install ibus-mozc
  6. Keyボードの日本語化
    1. 「ラズベリーアイコン>Preferences>Keyboard and Mouse>Keyboard」をクリックする。
    2. 以下のように設定する。
      1. Model:Generic 105-key PC (intl.)
      2. Layout:Japanese
      3. Variant:Japanese (OADG 109A)
  7. SSH IPアドレスを固定したら、問題なくつながった。
    インストールの時にSSH ONとしたかもしれない。

2025年6月3日火曜日

Python String

 なんか 雑多な事ばかりですが、、、

PicoはC言語、Windowsからの制御はPython頭がおかしくなる。。。

str_data = "Hello world"
str_data1 = "Hello world"
str_data2 = "abcde"

if(str_data1 == str_data2) :
    print("True")
else :
    print("Falese")

2025年6月1日日曜日

Rpi Pico なんとなくの再検討 PWM キー入力 LED点灯

 蛍とかキー入力とかなんとかこれで動いた。

Cのコード

#include "pico/stdlib.h"
#include "hardware/pwm.h"

int main() {
#ifndef PICO_DEFAULT_LED_PIN
#warning blink example requires a board with a regular LED
#else
    const uint LED_PIN = 22;
    const uint LED_PIN1 = 25;
    const uint input_PIN = 20;
    gpio_init(input_PIN);
    gpio_set_dir(input_PIN, GPIO_IN);
    gpio_init(LED_PIN);
    gpio_set_dir(LED_PIN, GPIO_OUT);
    gpio_set_function(LED_PIN, GPIO_FUNC_PWM);
    gpio_init(LED_PIN1);
    gpio_set_dir(LED_PIN1, GPIO_OUT);
    gpio_put(LED_PIN1, 1);
    uint slice_num = pwm_gpio_to_slice_num(22); //pin 22 slice No = 22
    /*例えばPWM周波数を1KHzに、PWMの分解能を8ビット(0~255)に設定したい場合、
    sysclock = 125,000,000Hz、wrap = 255、f=1000Hz より
    clkdiv = sysclock / ((wrap+1) ⋅ f )
    分周比 clkdiv = 488.2812 となる。*/
    pwm_set_clkdiv(slice_num, 488.2812);
    pwm_set_wrap(slice_num, 255);

    // チャンネルPWMのHigh期間を設定
    //pwm_set_chan_level(slice_num, 0, 5);
    //pwm_set_enabled(slice_num, true);

    int i=0;
    int flag=0;
    int flaga=0;

    while (true) {

    if(gpio_get(input_PIN) == 0)
     {
        gpio_put(LED_PIN1, 0);
        flaga=0;
        while(flaga<3){
    if(flag==0){
        i=i+1;
        if(i==256) flag=1;
        else ;    
    }
    else if(flag==1) {
        sleep_ms(500);
        flag=2;
    }  
    else if(flag==2) {
        i=i-1;
        if(i==0) flag=3;
        else ;
    }
    else
    {
        sleep_ms(1000);
        flag=0;
        i=0;
        flaga=flaga+1;
     
        }

    pwm_set_chan_level(slice_num, 0, i);
    pwm_set_enabled(slice_num, true);
    sleep_ms(10);
    //pwm_set_enabled(slice_num, false);
   
    }
      gpio_put(LED_PIN1, 1);
    }

else;
#endif
}

}

Makeがこちら

# Generated Cmake Pico project file

cmake_minimum_required(VERSION 3.13)

set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

# Initialise pico_sdk from installed location
# (note this can come from environment, CMake cache etc)



# == DO NOT EDIT THE FOLLOWING LINES for the Raspberry Pi Pico VS Code Extension to work ==
if(WIN32)
    set(USERHOME $ENV{USERPROFILE})
else()
    set(USERHOME $ENV{HOME})
endif()
set(sdkVersion 2.1.1)
set(toolchainVersion 14_2_Rel1)
set(picotoolVersion 2.1.1)
set(picoVscode ${USERHOME}/.pico-sdk/cmake/pico-vscode.cmake)
if (EXISTS ${picoVscode})
    include(${picoVscode})
endif()
# ====================================================================================
set(PICO_BOARD pico CACHE STRING "Board type")

# Pull in Raspberry Pi Pico SDK (must be before project)
include(pico_sdk_import.cmake)

project(hotal2 C CXX ASM)

# Initialise the Raspberry Pi Pico SDK
pico_sdk_init()

# Add executable. Default name is the project name, version 0.1

add_executable(hotal2 hotal2.c )


pico_set_program_name(hotal2 "hotal2")
pico_set_program_version(hotal2 "0.1")

# Modify the below lines to enable/disable output over UART/USB
pico_enable_stdio_uart(hotal2 0)
pico_enable_stdio_usb(hotal2 0)




# Add the standard library to the build
target_link_libraries(hotal2
        pico_stdlib)


# Add the standard include files to the build
target_include_directories(hotal2 PRIVATE
        ${CMAKE_CURRENT_LIST_DIR}
)

# Pull in our pico_stdlib which pulls in commonly used features        
target_link_libraries(hotal2 pico_stdlib hardware_pwm)


pico_add_extra_outputs(hotal2)


2025年5月26日月曜日

Raspberry Pi Pico プログラミング事始め。 思い出し。

 久しぶりにPicoを始めようと。

以前作ったボードの回路が分からなくなり、記載。



2024年6月29日土曜日

Arduino nano PWM制御

 暑いので、PCから抜いたFANで扇風機を作ろうと、、、

手元にあったのが、9cmのDC FAN 4ピンでPWMで制御可能との事

PINハイは下記と通り。

PWM端子はプルアップされており、12Vがそのまま出てきました。
Arduinoを壊すといけないので、Trをつけて駆動。




という事で、Arduinoの古いスケッチを漁る。

確かボリュームでPWM制御を作った記憶がある。

ありました。下記の感じでできます。

これは、PWMの周期を変える事が目的のソースコードです。

PWM周期を変えなければもっと簡単だと思います。

最初5kHz周期にしてみたが、FANの風の感じが荒く。。。

50Hzにしたら細かい制御ができるような気がします。

#include <avr/io.h>


#define PWMPin 10

#define dimmerPIN A0

#define LEDPin 13



unsigned int frq = 50; // 周波数

float duty = 0.0; // 指定したいデューティ比

int dimmerValue = 0;

int oldValue = 0;

int ledValue = 0;

int dledpin = 0;



void setup() {

pinMode(PWMPin, OUTPUT);

pinMode(LEDPin, OUTPUT);

pinMode(dimmerPIN, INPUT);

// モード指定

TCCR1A = 0b00100001;

TCCR1B = 0b00010010;


// TOP値指定

OCR1A = (unsigned int)(1000000 / frq);

Serial.begin(9600);


digitalWrite(LEDPin, LOW);


}


void setpwm(int advalue){

  if(advalue <= 115)  duty = 0;

  else if(advalue >= 908) duty = 1;

  else duty = ((float)advalue-115)/8/100;

  Serial.print("Duty ");

  Serial.println(duty);

  OCR1B = (unsigned int)(1000000 / frq * duty);

  delay(100);

}


void loop() {

  int i;

  for(i=0;i<=4;i++)

  {

    dimmerValue = dimmerValue + analogRead(dimmerPIN);

    delay(20);

  }


  dimmerValue = dimmerValue/5;


  if( dimmerValue == oldValue){

    dimmerValue = 0;

  }

  else {

    oldValue = dimmerValue;

    setpwm(dimmerValue);

    Serial.println("Change dimmerValue");

    Serial.println(dimmerValue);

    dimmerValue = 0;

  }

  

delay(100);


}

2024年1月23日火曜日

RPI Pico Ide

 https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json

2024年1月20日土曜日

今更ながら Visual C# 第三回目 チェックボックス メッセージボックス メッセージボックスにyes/No

 ① チェックボックス メッセージボックスを使ってみる。

 private void button1_Click(object sender, EventArgs e)

        {

            if (checkBox1.Checked) MessageBox.Show("チェックボックスがチェックされています。", "確認"); 

            // 条件が成立しない(チェックされていない)場合のメッセージ

            else MessageBox.Show(

                "チェックボックスがチェックされていません。", // メッセージ

                "確認");                                      // タイトル

        }


②メッセージボックスにYes,Noを入れてみる。

 private void button1_Click(object sender, EventArgs e)

        {

            // メッセージボックスの「はい」「いいえ」ボタンを変数buttonsに格納

            MessageBoxButtons buttons = MessageBoxButtons.YesNo;

            string caption = "どっちか選ぼう!";

            string message1 = "リンゴは好きですか?";


            DialogResult result1;


            if (checkBox1.Checked)

            { result1 = MessageBox.Show(message1,  // メッセージ

                                              caption,   // タイトル

                                              buttons    // ボタンを指定

                                             );

                if (result1 == DialogResult.Yes)

                {

                    label1.Text = "美味しいよね!";

                }


                else { label1.Text = "好きになってよ。。。"; }

            }

            // 条件が成立しない(チェックされていない)場合のメッセージ

            else MessageBox.Show(

                "チェックボックスがチェックされていません。", // メッセージ

                "確認");                                      // タイトル


         

                

                    }

今更ながら Visual C# 第二回目 TextBoxから文字を取り、Labelに字を入れる。

 今日はどんどん機能を覚えていきます。

TextBoxから文字を取り、Labelに字を入れます。

ボタン1を押すと掛け算がLabelに出るプログラム

private void button1_Click(object sender, EventArgs e)

        {

            int a, b, c;

            a = Convert.ToInt32(textBox1.Text);

            b = Convert.ToInt32(textBox2.Text); 

            c = a*b;

            label4.Text = Convert.ToString(c);


        }

2024年1月19日金曜日

今更ながら Visual C# 第一回目

 題名の通り。。。

始めた。

理由はいつもの通り、一緒に仕事をしているメンバーに簡単なWindowsのアプリを作るように頼んだが、断られた。。。

できない理由を30分聞かされ。。。

だったら、自分で書く事にした。

早速本を購入、仕事の帰りに横浜の紀伊国屋書店で本を探したが、あまり無く。。。

まーしょうがないから、これを買った。

3800円位、、、勢いとは言えムダ金を使ってしまった。








今日覚えた事。

プロジェクトは Windowsフォームアプリケーション .Net Frameworkで作ればよい。

いっぱい、在りすぎてわからんよ。。。



2023年5月17日水曜日

Pythonスクレイピング&クローリングデータ収集マスタリングハンドブック を読んでみた。

 題名の通りに特化した本。

ぜひこの本を読んで、色々なサイトをスクレイピングしてみて下さい。

あまりに特化しすぎて、私は買わない本だな~

超速Python仕事術大全 を読んでみた。

 

小さなTipsの集まり。

うまく抜き取ればプログラム、できる。


PythonでExcelやメール操作を自動化するツボとコツがゼッタイにわかる本を読んでみた。

 まーまーの内容だった。

エッセンスとして使えることも多い。

Excelを使いたい時に参考書として良いかな~








2023年5月9日火曜日

Python Selenium + Beautiful Soup

 WEBスクレイピングをするには欠かせない。Selenium

そこそこコントロールできるようになってきたが、ようやく本家のHPにたどりついた。

https://www.selenium.dev/ja/documentation/

ここのサンプルを明日から読もう。

2023年4月19日水曜日

Python ファイルの読み書き

 ファイルの読み書きの前に ファイルサイズとフォルダにあるファイルを調べる。

import os
print(os.path.getsize('C:\SRC\py\passwd.py'))
print(os.listdir('C:\SRC\py'))

これで見れる。

続いて

txtの読み書き。

まずは読み

web_test_file = open('C:\SRC\py\web_test.py') hello_content = web_test_file.read() print(hello_content)

1行ずつ読み込む事もできる。
web_test_file = open('C:\SRC\py\web_test.py')
hello_content1 = web_test_file.readlines()
print(hello_content1)

書き込み
web_test_file.close() web_test_file = open('C:\SRC\py\web_test.py','a') web_test_file.write('#追加') web_test_file.close() web_test_file = open('C:\SRC\py\web_test.py') hello_content = web_test_file.read() print(hello_content)


2023年4月11日火曜日

ビジネスPython超入門 を読んでみた。

 基本的には初心者向けとあるが、こちらのほうが内容があるように感じた。

記載されていることは変わらないが、余計な主人公が出てこなく。

わかりやすい。


2023年4月10日月曜日

スッキリわかるPython入門

 最近は下記本を借りて、Pythonを学び直していた。

他言語を使える人がPythonのイメージを掴む本と感じた。


プログラム初心者がこれを買っても、プログラミングできるようになるとは思えない。

見出しに「本質」とあるが、「雰囲気」の間違いではないか。。。

2023年4月8日土曜日

python 関数

 def hello():

    print('Hello World')

引数と戻り値

def plus(x,y):

    answer = x + y

    return answer

複数の戻り値を返したい場合

def plus_minus(x,y):

    return (x+y,x-y) タプルで返す。

引数をデフォルト値に設定もできる。

def plus_minus(x , y=10):

    return (x+y,x-y) 

こんな感じ。
引数をタプルにもできる。

python 繰り返し while for

While文

 count = 0

while count < 3:

    print('カウントアップ {} '.format(count))

for文

number = [20,30,40,50]

for data in number:

 if number >= 35:

    print('BIG')

 else:

    print('small')

forで決まった回数繰り返す。

for num in range(3):

    print('きゃっっきゃ')

forを抜けるときは breakで抜けれる。

一回だけスキップする時はcontinueで抜ける。



2023年4月7日金曜日

python 条件分岐 if

elifだって。変なの!

in 演算子が今まで無いイメージ


 if x>= 100:

    print('OK')

elif x>=50:

    print('....')

else:

    print('NG')


in演算を使ったイメージ

price = [80, 100, 20, 60]

if 100 in price:

    print('100円の物があったんだね。')

else:

    print('安かったね。')


python 標準入出力

 printで標準出力

print('XXXXX')


inputで標準入力

name = input('Input your name')