goo blog サービス終了のお知らせ 

Charry-charry工房(チャーリー・チャーリーコウボウ)

50歳の手習い
(県立秋田工業高校 機械科卒業後、40年目に自分用の旋盤・フライス盤を所有することに)

2025MAR12 センサーとarudino

2025-03-12 05:28:23 | arudino

ディスプレイをSSD1331にすると
上手く行かないのでSSD1306に取
り替えてスケッチを書いて貰った所動き
ました。
SPI通信とI2Cを混在するとダメな
のか?
SSD1331を使うとだめなのか?
最終的には不具合の原因分かりませんで
した。

I2C通信にまとめました。

I2C通信に使用する(SDAとSCL)
の線はツイストペアにしました。
(黄色と緑線)

スイッチを押したら10秒間だけ表示し
て、その後はディスプレイ表示はしない
設定を追加したところ、パソコンの電源
が落ちました。

そこで、コパイロット(AI)に外部電
源をパソコンのUSB電源と一緒にして
供給しても良いかと尋ねたところ、OK
との返事
外部電源9Vを追加してコンパイルをか
けたものの、パソコンの電源が落ちる現
象は変わりませんでした。

なんだろうな???
私のプルダウン配線ミス

「ショートしたのかな?」

と言うことで、昨日コパイロットと一緒
に作ったスケッチを公開します。

来週、新しいパソコンが来たらもう一度
コンパイルしてみたいと思います。

それまでは様子見することにします。

スケッチーーーーーーーーーーーーーー

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#include <RTClib.h>

// OLED display pins
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64

// Create an SSD1306 display object connected to I2C
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

// Create RTC instance
RTC_DS3231 rtc;
// Create BME280 instance
Adafruit_BME280 bme;

// Define switch pin
#define switchPin 4

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

// Initialize switch pin
pinMode(switchPin, INPUT_PULLUP);

// Initialize OLED display with I2C address 0x3C
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for (;;);
}

display.display();
delay(2000); // Pause for 2 seconds
display.clearDisplay();

// Initialize RTC
if (!rtc.begin()) {
Serial.println("RTC initialization failed");
while (1);
}

// Check if the RTC lost power and if so, set the time
if (rtc.lostPower()) {
Serial.println("RTC lost power, setting the time!");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}

// Initialize BME280 sensor
if (!bme.begin(0x76)) {
Serial.println("BME280 initialization failed");
while (1);
}
}

void loop() {
if (digitalRead(switchPin) == LOW) {
// Read current time
DateTime now = rtc.now();

// Read sensor data from BME280
float temperature = bme.readTemperature();
float humidity = bme.readHumidity();
float pressure = bme.readPressure() / 100.0F;

// Display time and sensor data on OLED
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.print(now.year(), DEC);
display.print('/');
display.print(now.month(), DEC);
display.print('/');
display.print(now.day(), DEC);
display.print(" ");
display.print(now.hour(), DEC);
display.print(':');
display.print(now.minute(), DEC);
display.setCursor(0, 20);
display.print("Temp: ");
display.print(temperature);
display.print(" C");
display.setCursor(0, 30);
display.print("Humidity: ");
display.print(humidity);
display.print(" %");
display.setCursor(0, 40);
display.print("Pressure: ");
display.print(pressure);
display.print(" hPa");
display.display();

delay(10000); // Display for 10 seconds
} else {
display.clearDisplay();
display.display();
}

delay(100); // Check switch status every 100 ms
}

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

〇無線 3.5MHz
D68ZとVU4AXを呼ぶ局が沢山

しかし、私の所には聞えません。
残念だな!







最新の画像もっと見る

コメントを投稿

サービス終了に伴い、10月1日にコメント投稿機能を終了させていただく予定です。