Mon Moniteur Serie imprime des caractères bizzares

Bonjour,
J'utilise un Arduino UNO depuis un mois (newbie).
Pour un exercice je dois me servir de DHT Tester avec des Moy, Min et max.
J'ai téléversé le code obtenu ds les exemples, après avoir changé le DHTTYPE define (sans trop comprendre ce que c'est).
Mon moniteur série lit donc les infos de temperature et d'humidité mais il affiche des caractères espagnols à la place du ° pour les degrés.
(baudrate : 9600 ds le prog et sur le moniteur).

Sauriez vous m'aider a en connaitre la cause?
Merci.

// Example testing sketch for various DHT humidity/temperature sensors
// Written by ladyada, public domain


// REQUIRES the following Arduino libraries:
// - DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library
// - Adafruit Unified Sensor Lib: https://github.com/adafruit/Adafruit_Sensor


#include "DHT.h"


#define DHTPIN 2     // Digital pin connected to the DHT sensor
// Feather HUZZAH ESP8266 note: use pins 3, 4, 5, 12, 13 or 14 --
// Pin 15 can work but DHT must be disconnected during program upload.


// Uncomment whatever type you're using!
#define DHTTYPE DHT11   // DHT 11
//#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
//#define DHTTYPE DHT21   // DHT 21 (AM2301)


// Connect pin 1 (on the left) of the sensor to +5V
// NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1
// to 3.3V instead of 5V!
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor


// Initialize DHT sensor.
// Note that older versions of this library took an optional third parameter to
// tweak the timings for faster processors.  This parameter is no longer needed
// as the current DHT reading algorithm adjusts itself to work on faster procs.
DHT dht(DHTPIN, DHTTYPE);


void setup() {
  delay (2000);
  Serial.begin(9600);
  Serial.println(F("DHTxx test!"));


  dht.begin();
}


void loop() {
  // Wait a few seconds between measurements.
  delay(2000);


  // Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.readHumidity();
  // Read temperature as Celsius (the default)
  float t = dht.readTemperature();
  // Read temperature as Fahrenheit (isFahrenheit = true)
  float f = dht.readTemperature(true);


  // Check if any reads failed and exit early (to try again).
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println(F("Failed to read from DHT sensor!"));
    return;
  }


  // Compute heat index in Fahrenheit (the default)
  float hif = dht.computeHeatIndex(f, h);
  // Compute heat index in Celsius (isFahreheit = false)
  float hic = dht.computeHeatIndex(t, h, false);


  Serial.print(F("Humidity: "));
  Serial.print(h);
  Serial.print(F("%  Temperature: "));
  Serial.print(t);
  Serial.print(F("°C "));
  Serial.print(f);
  Serial.print(F("°F  Heat index: "));
  Serial.print(hic);
  Serial.print(F("°C "));
  Serial.print(hif);
  Serial.println(F("°F"));
}

A la place de

Serial.print(F("°C "));

Essaye

Serial.print(char(176));
Serial.print(F("C "));

Si 176 ne donne pas le bon caractère, essaye 167.

Pourtant le caractère ° est reconnu.

Serial.print(char(176));

Ne peut pas fonctionner, ° est un caractère demandant 2 codes ascii

Voici chez moi avec le programme:

void setup()
{
  Serial.begin(115200);
  Serial.println(F("En direct: 10°C"));
  String s="°";
  Serial.print("Longueur de s: "); Serial.println(s.length());
  for (byte i=0; i<s.length(); i++)
  {
    Serial.print(F("S["));
    Serial.print(i);
    Serial.print(F("]: "));
    Serial.println(byte(s[i]));
  }
  Serial.print(F("Par les codes: 10"));
  Serial.print(char(194));
  Serial.print(char(176));
  Serial.println(F("C\n"));
  
}

void loop(){}

J'obtiens:

En direct: 10°C
Longueur de s: 2
S[0]: 194
S[1]: 176
Par les codes: 10°C

Il est vrai que j'utilise la version 1.8.12 la dernière version ne fonctionne pas correctement. Il peut y avoir un changement avec la dernière version.

Bonjour,

Depuis la version 1.8 (au moins) la console affiche les caractères UTF8 sans problème.
Comme l'éditeur utilise l'UTF8, lorsqu'on fait Serial.println(F("°C\n")); "°C" s'affiche sans problème.

Le problème de paulbizmuth est très bizarre, a moins qu'il y ait un bug dans la version 1.8.8 ou que paulbizmuth ait fait une manip non usuelle (récupération d'un fichier ansi par exemple).

Il faut essayer de retaper la ligne ou il y a la °C dans l'éditeur de l'ide.

J'ai essayé en 1.8.5 et 1.8.11, pas de problème pour afficher "°C".

Dans les versions récentes, à la fois l'IDE stocke le contenu des cStrings en UTF8 et la console supporte l'affichage UTF8.

=> Donc pas de raison valable normalement pour que '°' ne s'affiche pas - sauf vieille version de l'IDE mais on dirait bien suivant l'image que c'est la 1.8.8 ?

éventuellement si le contenu de la cString provient d'un copier coller depuis le web, peut-être qu'un encoding différent a été généré suivant le navigateur web et ses préférences. Dans ce cas essayer en retapant le symbole lui même dans l'IDE

un autre test serait de faire un copier coller depuis le code posté sur le forum (le forum remet en forme et vire certains trucs louche) et de recompiler.

Bonjour, je viens de prendre connaissance de vos messages,
je vais commencer par tenter de mettre a jour mon ide puis, en fonction mettre en place vos soluces,
je reviens vers vous.
MERCI.