質問編集履歴
2
やってみましたが、コードの貼り付け方うまくいったでしょうか?
    
        title	
    CHANGED
    
    | 
            File without changes
         | 
    
        body	
    CHANGED
    
    | @@ -33,6 +33,7 @@ | |
| 33 33 |  | 
| 34 34 | 
             
            ### 該当のソースコード
         | 
| 35 35 |  | 
| 36 | 
            +
            ```arduino
         | 
| 36 37 | 
             
            #include <SPI.h>
         | 
| 37 38 | 
             
            #include <Wire.h>
         | 
| 38 39 | 
             
            #include <Adafruit_MLX90614.h>
         | 
| @@ -224,4 +225,5 @@ | |
| 224 225 | 
             
              Serial.println(temp_new); //シリアルモニタに測定した体温を表示
         | 
| 225 226 |  | 
| 226 227 | 
             
              return temp_new;
         | 
| 227 | 
            -
            }
         | 
| 228 | 
            +
            }
         | 
| 229 | 
            +
            ```
         | 
1
コードを貼り付けました。不必要なテンプレート消しました。
    
        title	
    CHANGED
    
    | 
            File without changes
         | 
    
        body	
    CHANGED
    
    | @@ -16,6 +16,16 @@ | |
| 16 16 | 
             
            ネット記事の見様見真似で始めたArduinoですので、小生は基礎がありません。
         | 
| 17 17 | 
             
            わかっている方にお教えいただきたいと思い質問をしています。
         | 
| 18 18 |  | 
| 19 | 
            +
            【追記】】
         | 
| 20 | 
            +
            コードを貼り付けました。
         | 
| 21 | 
            +
            2つのディスプレイそれぞれに、ライブラリ違いのdisplayを書いています。
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            コンパイルは、
         | 
| 24 | 
            +
            Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT,
         | 
| 25 | 
            +
            の行で止まります。
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            よろしくお願いいたします。
         | 
| 28 | 
            +
             | 
| 19 29 | 
             
            ### 発生している問題・エラーメッセージ
         | 
| 20 30 |  | 
| 21 31 | 
             
            conflicting declaration 'Adafruit_SSD1306 display'
         | 
| @@ -23,39 +33,195 @@ | |
| 23 33 |  | 
| 24 34 | 
             
            ### 該当のソースコード
         | 
| 25 35 |  | 
| 26 | 
            -
             | 
| 36 | 
            +
            #include <SPI.h>
         | 
| 27 | 
            -
             | 
| 37 | 
            +
            #include <Wire.h>
         | 
| 38 | 
            +
            #include <Adafruit_MLX90614.h>
         | 
| 28 | 
            -
             | 
| 39 | 
            +
            #include <Adafruit_GFX.h>
         | 
| 40 | 
            +
            #include <Adafruit_SSD1306.h>
         | 
| 41 | 
            +
            #include "Adafruit_VL53L0X.h"
         | 
| 42 | 
            +
            #include <TM1637Display.h>// Include the library:
         | 
| 29 43 |  | 
| 44 | 
            +
            // TM1637 7セグLED初期設定
         | 
| 45 | 
            +
            // Define the connections pins:
         | 
| 46 | 
            +
            #define CLK 15//22
         | 
| 30 | 
            -
            # | 
| 47 | 
            +
            #define DIO 1//21
         | 
| 31 48 |  | 
| 49 | 
            +
            // Create display object of type TM1637Display:
         | 
| 32 | 
            -
             | 
| 50 | 
            +
            //タイプTM1637Displayの表示オブジェクトを作成します:
         | 
| 51 | 
            +
            TM1637Display display = TM1637Display(CLK, DIO);
         | 
| 33 52 |  | 
| 53 | 
            +
            // Create array that turns all segments on:
         | 
| 34 | 
            -
             | 
| 54 | 
            +
            //すべてのセグメントをオンにする配列を作成します。
         | 
| 55 | 
            +
            const uint8_t data[] = {0xff, 0xff, 0xff, 0xff};
         | 
| 35 56 |  | 
| 57 | 
            +
            // Create array that turns all segments off:
         | 
| 36 | 
            -
             | 
| 58 | 
            +
            //すべてのセグメントをオフにする配列を作成します。
         | 
| 37 | 
            -
             | 
| 59 | 
            +
            const uint8_t blank[] = {0x00, 0x00, 0x00, 0x00};
         | 
| 38 60 |  | 
| 39 | 
            -
             | 
| 61 | 
            +
            // LCD初期設定
         | 
| 40 | 
            -
             | 
| 62 | 
            +
            #define SCREEN_WIDTH 128 // OLED display width, in pixels
         | 
| 41 | 
            -
             | 
| 63 | 
            +
            #define SCREEN_HEIGHT 64 // OLED display height, in pixels
         | 
| 42 64 |  | 
| 65 | 
            +
            // Declaration for SSD1306 display connected using software SPI (default case):
         | 
| 43 | 
            -
            # | 
| 66 | 
            +
            #define OLED_MOSI  23
         | 
| 67 | 
            +
            #define OLED_CLK   18
         | 
| 68 | 
            +
            #define OLED_DC    4
         | 
| 69 | 
            +
            #define OLED_CS    5
         | 
| 70 | 
            +
            #define OLED_RESET 2
         | 
| 71 | 
            +
            Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT,
         | 
| 72 | 
            +
              OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
         | 
| 44 73 |  | 
| 45 | 
            -
            ```
         | 
| 46 | 
            -
             | 
| 74 | 
            +
            //超音波距離センサ定数設定
         | 
| 75 | 
            +
            #define OK_DISTANCE 40 // 測定は40mm以内
         | 
| 47 | 
            -
             | 
| 76 | 
            +
            Adafruit_VL53L0X lox = Adafruit_VL53L0X();
         | 
| 48 77 |  | 
| 49 | 
            -
             | 
| 78 | 
            +
            // スピーカー定数設定
         | 
| 79 | 
            +
            #define BEATTIME 500 //音を出している時間(msec)
         | 
| 80 | 
            +
            #define SPEAKER 25 //スピーカーの出力ピン番号]
         | 
| 81 | 
            +
            #define OK_SOUND 1046.502
         | 
| 82 | 
            +
            #define NG_SOUND 500.0
         | 
| 50 83 |  | 
| 51 | 
            -
             | 
| 84 | 
            +
            // 温度センサー初期設定
         | 
| 85 | 
            +
            #define TEMP_THRESHOLD 37.5 //平熱/発熱の判定を行う閾値
         | 
| 86 | 
            +
            #define ADJUST_TEMP 0 //体温補正:表面温度+3.7℃=体温
         | 
| 52 | 
            -
             | 
| 87 | 
            +
            Adafruit_MLX90614 mlx = Adafruit_MLX90614();
         | 
| 53 | 
            -
            ```
         | 
| 54 88 |  | 
| 89 | 
            +
            // デバッグ用
         | 
| 55 | 
            -
            # | 
| 90 | 
            +
            #define DEBUG 0
         | 
| 56 91 |  | 
| 92 | 
            +
            //初期設定
         | 
| 93 | 
            +
            void setup() {
         | 
| 57 | 
            -
             | 
| 94 | 
            +
              Serial.begin(9600);
         | 
| 95 | 
            +
                Serial.println("Adafruit MLX90614 test");  
         | 
| 58 96 |  | 
| 59 | 
            -
             | 
| 97 | 
            +
              mlx.begin();
         | 
| 60 98 |  | 
| 99 | 
            +
              Wire.begin();
         | 
| 100 | 
            +
             | 
| 101 | 
            +
              if (!lox.begin()) {
         | 
| 102 | 
            +
                Serial.println(F("Failed to boot VL53L0X"));
         | 
| 103 | 
            +
                while(1);
         | 
| 104 | 
            +
              }
         | 
| 105 | 
            +
             | 
| 106 | 
            +
              // SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally
         | 
| 107 | 
            +
              if(!display.begin(SSD1306_SWITCHCAPVCC)) {
         | 
| 108 | 
            +
                Serial.println(F("SSD1306 allocation failed"));
         | 
| 109 | 
            +
                for(;;); // Don't proceed, loop forever
         | 
| 110 | 
            +
              }
         | 
| 111 | 
            +
             | 
| 112 | 
            +
            //ESP32で音を鳴らすための設定
         | 
| 113 | 
            +
              ledcSetup(1, 12000, 8); //(チャネル0~15, PWMの周波数, デューティ比を表すビット数)
         | 
| 114 | 
            +
              ledcAttachPin(SPEAKER, 1); //(ピン番号, チャネル)
         | 
| 115 | 
            +
             | 
| 116 | 
            +
             | 
| 117 | 
            +
              display.setTextColor(SSD1306_WHITE); // Draw white text
         | 
| 118 | 
            +
              display.setCursor(0, 16);     // Start at top-left corner
         | 
| 119 | 
            +
              display_text("Temp?");
         | 
| 120 | 
            +
             | 
| 121 | 
            +
            }
         | 
| 122 | 
            +
            //ループ関数
         | 
| 123 | 
            +
            void loop() {
         | 
| 124 | 
            +
             | 
| 125 | 
            +
              float temp;
         | 
| 126 | 
            +
             | 
| 127 | 
            +
              temp = mlx.readObjectTempC();
         | 
| 128 | 
            +
              Serial.print("object Temp, ");
         | 
| 129 | 
            +
              Serial.print(temp); //シリアルモニタに計算したobject温度を表示
         | 
| 130 | 
            +
              Serial.print("\tambient Temp, ");
         | 
| 131 | 
            +
              Serial.print(mlx.readAmbientTempC()); //シリアルモニタに計算したambient温度を表示
         | 
| 132 | 
            +
             | 
| 133 | 
            +
              if(is_distance_ok()){
         | 
| 134 | 
            +
                temp = read_temp_sensor() + ADJUST_TEMP;
         | 
| 135 | 
            +
                display_temp(temp);
         | 
| 136 | 
            +
                7segs_temp(temp);
         | 
| 137 | 
            +
                if(temp < TEMP_THRESHOLD){
         | 
| 138 | 
            +
                  play_sound(OK_SOUND, 100, 2);
         | 
| 139 | 
            +
                  delay(3000);
         | 
| 140 | 
            +
                  display_text("Temp?");
         | 
| 141 | 
            +
                }else{
         | 
| 142 | 
            +
                  play_sound(NG_SOUND, 500, 2);
         | 
| 143 | 
            +
                  delay(3000);
         | 
| 144 | 
            +
                  display_text("Temp?");
         | 
| 145 | 
            +
                }
         | 
| 146 | 
            +
              }else if(temp > 28.0){
         | 
| 147 | 
            +
                play_sound(NG_SOUND, 100, 5);
         | 
| 148 | 
            +
                display_text("Too far!");
         | 
| 149 | 
            +
                delay(500);
         | 
| 150 | 
            +
              }
         | 
| 151 | 
            +
              delay(500);
         | 
| 152 | 
            +
            }
         | 
| 153 | 
            +
             | 
| 154 | 
            +
            void play_sound(float freq, int beattime, int number){
         | 
| 155 | 
            +
              for(int i=0; i<number; i++){
         | 
| 156 | 
            +
                ledcWriteTone(1,freq) ; // ド
         | 
| 157 | 
            +
                delay(beattime);
         | 
| 158 | 
            +
                ledcWrite(1,0);
         | 
| 159 | 
            +
              }
         | 
| 160 | 
            +
            }
         | 
| 161 | 
            +
             | 
| 162 | 
            +
            void display_text(char* text){
         | 
| 163 | 
            +
                  display.clearDisplay();
         | 
| 164 | 
            +
                  display.setTextSize(2);      // Normal 2x2 pixel scale
         | 
| 165 | 
            +
                  display.setCursor(0, 16);     // Start at top-left corner
         | 
| 166 | 
            +
                  display.cp437(true);         // Use full 256 char 'Code Page 437' font
         | 
| 61 | 
            -
             | 
| 167 | 
            +
                  display.print(text);
         | 
| 168 | 
            +
                  display.display();
         | 
| 169 | 
            +
            }
         | 
| 170 | 
            +
             | 
| 171 | 
            +
            void display_temp(float number){
         | 
| 172 | 
            +
                  display.clearDisplay();
         | 
| 173 | 
            +
                  display.setTextSize(4);      // Normal 4x4 pixel scale
         | 
| 174 | 
            +
                  display.setCursor(0, 16);     // Start at top-left corner
         | 
| 175 | 
            +
                  display.cp437(true);         // Use full 256 char 'Code Page 437' font
         | 
| 176 | 
            +
                  display.print(number);
         | 
| 177 | 
            +
                  display.display();
         | 
| 178 | 
            +
            }
         | 
| 179 | 
            +
             | 
| 180 | 
            +
            void 7segs_temp(float number){
         | 
| 181 | 
            +
                  display.clear();
         | 
| 182 | 
            +
                  display.showNumberDec(number,false, 2, 0); // distance to front obstacle 
         | 
| 183 | 
            +
                  //display.setSegments(Letter_deg,1,2);
         | 
| 184 | 
            +
                  //display.setSegments(Letter_C,1,3);
         | 
| 185 | 
            +
                  delay(1100);
         | 
| 186 | 
            +
            }
         | 
| 187 | 
            +
             | 
| 188 | 
            +
            int is_distance_ok(){
         | 
| 189 | 
            +
              VL53L0X_RangingMeasurementData_t measure;
         | 
| 190 | 
            +
              lox.rangingTest(&measure, false); // pass in 'true' to get debug data printout!
         | 
| 191 | 
            +
             | 
| 192 | 
            +
              float Distance = 0; //計算した距離を格納する変数
         | 
| 193 | 
            +
             | 
| 194 | 
            +
              if (measure.RangeStatus != 4) {  // phase failures have incorrect data 4回測定できない
         | 
| 195 | 
            +
              Distance = measure.RangeMilliMeter; //cmへの換算
         | 
| 196 | 
            +
              Serial.print("\tDistance, "); //わかりやすくするため、シリアルモニタにDistance:を表示
         | 
| 197 | 
            +
              Serial.println(Distance); //シリアルモニタに計算した距離を表示
         | 
| 198 | 
            +
               } else {    
         | 
| 199 | 
            +
              //display.setTextSize(1); // Draw 1X-scale text
         | 
| 200 | 
            +
              //display.setCursor(0, 48);
         | 
| 201 | 
            +
              //display.println("out of range ...");
         | 
| 202 | 
            +
              Serial.println("\tout of range ...");
         | 
| 203 | 
            +
              } 
         | 
| 204 | 
            +
              if(Distance > 0 && Distance < OK_DISTANCE){
         | 
| 205 | 
            +
                return 1;
         | 
| 206 | 
            +
              }else{
         | 
| 207 | 
            +
                return 0;
         | 
| 208 | 
            +
              }
         | 
| 209 | 
            +
            }
         | 
| 210 | 
            +
             | 
| 211 | 
            +
            float read_temp_sensor(){
         | 
| 212 | 
            +
              float temp_old;
         | 
| 213 | 
            +
              float temp_new;
         | 
| 214 | 
            +
             | 
| 215 | 
            +
              temp_old = mlx.readObjectTempC();
         | 
| 216 | 
            +
              for(int i=0; i<8; i++){
         | 
| 217 | 
            +
                temp_new = mlx.readObjectTempC();
         | 
| 218 | 
            +
                if(temp_new > temp_old){
         | 
| 219 | 
            +
                  temp_new = temp_old;
         | 
| 220 | 
            +
                }
         | 
| 221 | 
            +
                delay(50);
         | 
| 222 | 
            +
              }
         | 
| 223 | 
            +
              Serial.print("Temp_fixed, ");
         | 
| 224 | 
            +
              Serial.println(temp_new); //シリアルモニタに測定した体温を表示
         | 
| 225 | 
            +
             | 
| 226 | 
            +
              return temp_new;
         | 
| 227 | 
            +
            }
         | 
