Questo e un codice fatto fare da me a chat gpt per un robot che valuti il suo stato di salute oltre alle normali frasi da rispondere via terminale in arduino ide ecco il codice, serve qualche miglioria... l'arduino e nano sense V2.
#include <Wire.h>
#include <Arduino_LPS22HB.h>
#include <Arduino_APDS9960.h>
#define HS3001_ADDR 0x44
String input;
// === SETUP ===
void setup() {
Serial.begin(9600);
while (!Serial);
Wire.begin();
if (!BARO.begin()) {
Serial.println("Errore: Sensore pressione non trovato!");
}
if (!APDS.begin()) {
Serial.println("Errore: Sensore luce non trovato!");
}
Serial.println("Ciao! Sono NanoBot. Scrivi qualcosa per iniziare.");
}
// === LOOP ===
void loop() {
if (Serial.available()) {
input = Serial.readStringUntil('\n');
input.trim();
gestisciDomanda(input);
delay(500);
verificaSalute();
Serial.println("---------------");
}
}
// === RISPOSTA CHAT ===
void gestisciDomanda(String domanda) {
domanda.toLowerCase();
if (domanda.indexOf("ciao") >= 0) {
Serial.println("Ciao! Piacere di parlarti!");
} else if (domanda.indexOf("come stai") >= 0) {
Serial.println("Sto bene! Almeno credo...");
} else if (domanda.indexOf("salute") >= 0 || domanda.indexOf("sensori") >= 0) {
Serial.println("Controllo i miei parametri vitali...");
} else if (domanda.indexOf("nome") >= 0) {
Serial.println("Mi chiamo NanoBot!");
} else {
Serial.println("Non so cosa dire, ma sono felice di ascoltarti.");
}
}
// === LETTURA SENSORE HS3001 ===
bool leggiHS3001(float &temperature, float &humidity) {
Wire.beginTransmission(HS3001_ADDR);
Wire.endTransmission();
delay(10);
Wire.requestFrom(HS3001_ADDR, 4);
if (Wire.available() == 4) {
uint16_t rawHumidity = (Wire.read() << 8) | Wire.read();
uint16_t rawTemp = (Wire.read() << 8) | Wire.read();
humidity = ((rawHumidity & 0x3FFF) / 16383.0) * 100.0;
temperature = (((rawTemp >> 2) & 0x3FFF) / 16383.0) * 165.0 - 40.0;
return true;
}
return false;
}
// === VERIFICA SALUTE ===
void verificaSalute() {
float temp, hum;
float pressure = BARO.readPressure();
int light = APDS.readProximity();
bool ok = true;
if (!leggiHS3001(temp, hum)) {
Serial.println("⚠️ Errore lettura temperatura/umidità.");
ok = false;
} else {
Serial.print("🌡️ Temperatura: "); Serial.print(temp); Serial.println(" °C");
Serial.print("💧 Umidità: "); Serial.print(hum); Serial.println(" %");
if (temp < 5 || temp > 35) ok = false;
if (hum < 20 || hum > 80) ok = false;
}
Serial.print("📈 Pressione: "); Serial.print(pressure); Serial.println(" hPa");
if (pressure < 950 || pressure > 1050) ok = false;
Serial.print("💡 Prossimità: "); Serial.println(light);
if (light < 5 || light > 250) ok = false;
if (ok) {
Serial.println("✅ Sto bene! Tutti i valori sono nella norma.");
} else {
Serial.println("❌ Sto male... alcuni parametri sono fuori soglia.");
}
}
Nota sulla privacy del progetto Questo progetto di robot chatbot è stato realizzato esclusivamente a scopo didattico. Non raccoglie, memorizza né condivide dati personali. Le interazioni sono simulate o anonime, e qualsiasi connessione con servizi esterni (API) è configurata per non trasmettere informazioni identificabili. In caso di utilizzo reale, si consiglia di adattare il codice nel rispetto del Regolamento (UE) 2016/679 (GDPR) e delle linee guida del Garante.
Buonasera e benvenuto nella sezione Italiana del forum,
cortesemente, come prima cosa, leggi attentamente il REGOLAMENTOdi detta sezione, (... e, per evitare future possibili discussioni/incomprensioni, prestando molta attenzione al punto 15), dopo di che, come da suddetto regolamento (punto 16.7), fai la tua presentazioneNELL'APPOSITA DISCUSSIONE (... quello che vedi in blu è un link, fai click su di esso per raggiungere la discussione) spiegando bene quali esperienze hai in elettronica e programmazione, affinché noi possiamo conoscere la tua esperienza ed esprimerci con termini adeguati.
Grazie,
Guglielmo
P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposita discussione, nel rispetto del succitato regolamento nessuno ti risponderà (eventuali risposte o tuoi ulteriori post, verrebbero temporaneamente nascosti), quindi ti consiglio di farla al più presto.
Non è esatto ...
... il tuo post è del 27.06.25, io ti ho chiesto di fare la presentazione e SUCCESSIVAMENTE, il 28.06.25 tu l'hai fatta, quindi ... NESSUN "diverso tempo fa"
Beh se non e esatto probabilmente non ho capito bene quello che hai detto e visto che non e nel mio interesse pubblicare per me ma per la collettivita puoi pure rimuovere tutto tanto non mi interessano i badge come a voi!
Ho cambiato il codice in modo tale che il chatbot risponda alle domande dei sensori piu umanamente, putroppo non c e incorporato il sensore luce o colore per fare la domanda ci vedi?. ho usato solo i sensori incorporati.
ecco il codice
#include <Arduino_HS300x.h>
#include <Arduino_APDS9960.h>
float pressioneSimulata = 127.0; // Valore di esempio
void setup() {
Serial.begin(9600);
while (!Serial);
if (!HS300x.begin()) {
Serial.println("❌ Errore: sensore temperatura/umidità non trovato!");
while (1);
}
if (!APDS.begin()) {
Serial.println("❌ Errore: sensore prossimità non trovato!");
while (1);
}
Serial.println("🤖 Chatbot salute pronto!");
Serial.println("Puoi chiedermi: come stai?, hai caldo?, c'è qualcuno vicino?, pressione...");
}
void loop() {
if (Serial.available() > 0) {
String input = Serial.readStringUntil('\n');
input.trim();
input.toLowerCase();
float temp = HS300x.readTemperature();
float hum = HS300x.readHumidity();
int proximity = APDS.readProximity();
if (input.indexOf("come stai") != -1) {
Serial.println("🧠 Mi sento bene! Ecco i miei parametri:");
Serial.print("🌡️ Temperatura: ");
Serial.print(temp, 1);
Serial.println(" °C");
Serial.print("💧 Umidità: ");
Serial.print(hum, 1);
Serial.println(" %");
Serial.print("📡 Prossimità: ");
Serial.println(proximity);
Serial.print("🩺 Pressione (simulata): ");
Serial.print(pressioneSimulata, 1);
Serial.println(" mmHg");
}
else if (input.indexOf("hai caldo") != -1) {
Serial.println(temp > 36.0 ? "🥵 Sì, ho caldo!" : "😊 No, la temperatura è confortevole.");
}
else if (input.indexOf("hai freddo") != -1) {
Serial.println(temp < 36.0 ? "🥶 Brr... ho freddo." : "😌 No, sto al caldo.");
}
else if (input.indexOf("pressione") != -1) {
Serial.println(pressioneSimulata > 130.0 ?
"🩺 Attenzione: la pressione è un po’ alta." :
"🧘♂️ Tutto ok, pressione regolare.");
}
else if (input.indexOf("c'è qualcuno") != -1 || input.indexOf("ce qualcuno") != -1) {
if (proximity > 5) {
Serial.println("👀 Sì, rilevo qualcuno o qualcosa vicino!");
} else {
Serial.println("🕸️ Nessuno nei paraggi...");
}
}
else if (input.equals("help")) {
Serial.println("📋 Comandi disponibili:");
Serial.println("- come stai?");
Serial.println("- hai caldo?");
Serial.println("- hai freddo?");
Serial.println("- pressione");
Serial.println("- c'è qualcuno vicino?");
}
else {
Serial.println("❓ Non ho capito... digita 'help' per vedere cosa puoi chiedermi.");
}
}
}
Nota sulla privacy del progetto Questo progetto di robot chatbot è stato realizzato esclusivamente a scopo didattico . Non raccoglie, memorizza né condivide dati personali . Le interazioni sono simulate o anonime, e qualsiasi connessione con servizi esterni (API) è configurata per non trasmettere informazioni identificabili . In caso di utilizzo reale, si consiglia di adattare il codice nel rispetto del Regolamento (UE) 2016/679 (GDPR) e delle linee guida del Garante.