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(

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

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


         

                

                    }