12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- #include <stdio.h>
- #include "pico/stdlib.h"
- #include "hardware/i2c.h"
- #define I2C_SCL PICO_DEFAULT_I2C_SCL_PIN
- #define I2C_SDA PICO_DEFAULT_I2C_SDA_PIN
- #define SSD1306_ADDR 0x3C
- #define SSD1306_CB_CONTINUE 0x80
- #define SSD1306_SET_DISP_OFF 0xAE // Sleepモードに
- #define SSD1306_SET_DISP_ON 0xAF // Normalモードに
- int main()
- {
- stdio_init_all();
- // I2C0を400kbpsで初期化
- i2c_init(i2c0, 400*1000);
- // ピンをI2Cに割り当て
- gpio_set_function(I2C_SDA, GPIO_FUNC_I2C);
- gpio_set_function(I2C_SCL, GPIO_FUNC_I2C);
- gpio_disable_pulls(I2C_SDA);
- gpio_disable_pulls(I2C_SCL);
- // 外付けでプルアップした場合次の2行をコメントアウト
- gpio_pull_up(I2C_SDA);
- gpio_pull_up(I2C_SCL);
- uint8_t cmd_buf[2] = {0x80, SSD1306_SET_DISP_OFF};
- int ret;
- ret = i2c_write_blocking(i2c0, SSD1306_ADDR, cmd_buf, sizeof(cmd_buf),false );
- if(ret != sizeof(cmd_buf)) {
- printf("I2C Error\n");
- }
- sleep_ms(2000);
- cmd_buf[1] = SSD1306_SET_DISP_ON;
- ret = i2c_write_blocking(i2c0, SSD1306_ADDR, cmd_buf, sizeof(cmd_buf),false );
- if(ret != sizeof(cmd_buf)) {
- printf("I2C Error\n");
- }
- while (true) {
- tight_loop_contents();
- }
- }
|