1

i do some project. There is DS18B20, 3 mosfet modules, 1 relay, display 1602, buzzer... I built it on bread board, everything worked. Now i soldered it: arduino works, display works but DS18B20 doesn't return temperature.

I tried to solder thermometer over again - no result. Then i glanced at my sketch and tried to remove some code in loop and setup. I understood that DS18B20 works only if in setup function no pinMode(...) for other modules. It's odd!

This is part of my code:

#include <EncButton.h>     // For buttons
#include <microDS18B20.h>  // For thermometer DS18b20
#include <EEPROM.h>        // For EEPROM memory to save settings
#include <ezBuzzer.h>      // For buzzer
#include "Screen.h"

/* --- PINS --- */ #define kettle_relay_pin 4 // Relay of kettle #define mixer_pin 5 // Mixer pin #define termometer_pin A2 // Termometer pin #define hot_pump_pin A0 // Hot water #define sugar_dispenser_pin A1 // Sugar dispenser #define buzzer_pin 9 // Buzzer pin

#define l_button_pin 11 // Left button #define r_button_pin 12 // Right button #define potent_pin A3 // Potentiometer pin for set int values /* --- PINS --- */

#define INIT_ADDR 1023 // EEPROM addres for init key #define INIT_KEY 1 // EEPROM init key

/* --- Initialize objects --- */ // Connect thermometer DS18b20 MicroDS18B20<termometer_pin> ds;

ezBuzzer buzzer(buzzer_pin); // create ezBuzzer object that attach to a pin;

// Buttons EncButton<EB_TICK, l_button_pin> l_button; EncButton<EB_TICK, r_button_pin> r_button;

// LCD Display #define _LCD_TYPE 1 #include <LCD_1602_RUS_ALL.h> LCD_1602_RUS lcd(0x27, 16, 2); Screen screen(&lcd); // Create screen object instance for convient work with lcd display /* --- Initialize objects --- */

/* --- Initial values --- */ enum modes { // ... }; modes currentMode = normalMode;

// Default settings struct Settings{ //... } settings;

// Current values int current_temp = 25; // Current temperature // ... /* --- Initial values --- */

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

// Buttons and potentiometer
r_button.setButtonLevel(HIGH);
l_button.setButtonLevel(HIGH);
pinMode(potent_pin, INPUT);

// Kettle
pinMode(kettle_relay_pin, OUTPUT);
digitalWrite(kettle_relay_pin, LOW);

// Pump
pinMode(hot_pump_pin, OUTPUT);
digitalWrite(hot_pump_pin, LOW);

// Mixer
pinMode(mixer_pin, OUTPUT);
digitalWrite(mixer_pin, LOW);

// Sugar dispenser motor
pinMode(sugar_dispenser_pin, OUTPUT);
digitalWrite(sugar_dispenser_pin, LOW);

// Buzzer
pinMode(buzzer_pin, OUTPUT);

// Init EEPROM
if (EEPROM.read(INIT_ADDR) != INIT_KEY) {
    // EEPROM haven't been initialized yet
    EEPROM.write(INIT_ADDR, INIT_KEY); // Write init key
    EEPROM.put(0, settings); // Set default data
}

// Read settings and apply it
EEPROM.get(0, settings);
tea_temp = settings.tea_temp_default;       
sugar_count = settings.sugar_count_default; 
settings.mixer_time = 15 * 1000;

// Init display
screen.init();

}

unsigned long screenUpdateTimer = 0;

void loop() { buzzer.loop();

l_button.tick(); r_button.tick();

creen.render(); // Always render information on display

Serial.println(ds.online()); // TRUE

// For ds18b20 tests ds.requestTemp(); delay(1000); if (ds.readTemp()) Serial.println(ds.getTemp()); else Serial.println("error");

menuControl(); }

What's problem?

If i comment all pinMode and digitalWrite code, ds.readTemp works, else it's error.

UPDATE #1 I figured out that if i use ports A0 and A1, i get message "error" for this sketch:

#include <microDS18B20.h>
MicroDS18B20<A2> sensor;
void setup() {
  Serial.begin(9600);
}
void loop() {
  sensor.requestTemp();

delay(1000);

if (sensor.readTemp()) Serial.println(sensor.getTemp()); else Serial.println("error"); }

And more. I get this message "error" every time without any connected modules. After some connects and disconnects of mosfet module to pins A0, A1, D5, D6. No temperature at all! enter image description here enter image description here enter image description here

Update #2 I think it's died.

My main sketch (it worked yesterday) now doesn't work at all. But then i try some reboots and it works but not properly... So, if it works, i can see my menu on display but it's ierogliphs sometimes. also sometimes buttons stop to work...

Is aruino dead? enter image description here

Влад
  • 11
  • 2

0 Answers0