Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 183 odgovora
  • 93.616 pregleda

Najnovija ↓

Re: Arduino za pocetnike 08.03.2020. u 21:07 · pre 80 meseci #181
Code:
// Program za prikaz temeperature na LCD i slanje SMS-a
// Autori Terry Kong , Mihajlovic Milenko , Vladimir Lapcevic i Sam Olesen
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>

#include <SoftwareSerial.h>
SoftwareSerial M590(2, 3); // Rx, Tx

byte led = 10;

float temp1 = 0;
float temp2 = 0;
float temp3 = 0;
float temp4 = 0;

#define ONE_WIRE_BUS 8

#define I2C_ADDR 0x27
#define BACKLIGHT_PIN 3
#define En_pin 2
#define Rw_pin 1
#define Rs_pin 0
#define D4_pin 4
#define D5_pin 5
#define D6_pin 6
#define D7_pin 7

#define LED_OFF 0
#define LED_ON 1

OneWire oneWire(ONE_WIRE_BUS);

DallasTemperature sensors(&oneWire);

LiquidCrystal_I2C
lcd(I2C_ADDR, En_pin, Rw_pin, Rs_pin, D4_pin, D5_pin, D6_pin, D7_pin);

// WP 1
DeviceAddress Probe1 = {0x28, 0xFF, 0x27, 0xAC, 0xB5, 0x16, 0x03, 0x77}; //
DeviceAddress Probe2 = {0x28, 0x55, 0xB5, 0x27, 0x00, 0x00, 0x80, 0x3C}; //
//DeviceAddress Probe3 = {0x28, 0x55, 0xC3, 0x27, 0x00, 0x00, 0x80, 0xCD}; //
DeviceAddress Probe4 = {0x28, 0xDF, 0x65, 0x08, 0x00, 0x00, 0x80, 0xAD}; //
//DeviceAddress Probe1 = { 0x28, 0xBF, 0x9A, 0x27, 0x00, 0x00, 0x80, 0x4D }; //
DeviceAddress Probe3 = {0x28, 0xFF, 0x5B, 0xF7, 0xB4, 0x16, 0x05, 0x01}; //
void setup() /****** SETUP: RUNS ONCE ******/
{
delay(2000);
pinMode(led, OUTPUT);
digitalWrite(led, LOW);
Serial.begin(19200);
M590.begin(19200);
Serial.println("GSM NEOWAY M590");
Serial.println();
Serial.println("Turn on AOH:");
M590.println("AT+CLIP=1"); //
delay(100);
Serial.println("Text format sms:");
M590.println("AT+CMGF=1"); // SMS tekst format
delay(100);
Serial.println("Mode GSM:");
M590.println("AT+CSCS=\"GSM\""); // GSM
delay(100);

//------- Initialize the Temperature measurement library--------------
sensors.begin();
// set the resolution to 10 bit (Can be 9 to 12 bits .. lower is faster)
sensors.setResolution(Probe1, 10);
sensors.setResolution(Probe2, 10);
sensors.setResolution(Probe3, 10);
sensors.setResolution(Probe4, 10);
// sensors.setResolution(Probe5, 10);

//---------------- Initialize the lcd ------------------
lcd.begin(20, 4); // 20 characters, 4 lines
// Switch on the backlight
lcd.setBacklightPin(BACKLIGHT_PIN, POSITIVE);
lcd.setBacklight(HIGH);

} //--(end setup )---

void loop() /****** LOOP: RUNS CONSTANTLY ******/
{
sensors.requestTemperatures(); // Send the command to get temperatures

lcd.clear(); // Reset the display
lcd.home();
lcd.backlight(); // Backlight ON if under program control

lcd.setCursor(0, 0); // Start at character 0 on line 0
lcd.print("1:");
displayTemperature(Probe1);

lcd.setCursor(0, 1); // Start at character 0 on line 1
lcd.print("2:");
displayTemperature(Probe2);

lcd.setCursor(0, 2); // Start at character 0 on line 2
lcd.print("3:");
displayTemperature(Probe3);

lcd.setCursor(0, 3); // Start at character 0 on line 3
lcd.print("4:");
displayTemperature(Probe4);

temp1 = getTemperature(Probe1);
temp2 = getTemperature(Probe2);
temp3 = getTemperature(Probe3);
temp4 = getTemperature(Probe4);

/////////////////////////////////////////////////
// Program za konverziju promenljive float u niz znakova
//////////////////////////////////////////
String MyString = "";

MyString += String(temp1, 2) + " T1 ";
MyString += String(temp2, 2) + " T2 ";
MyString += String(temp3, 2) + " T3 ";
MyString += String(temp4, 2) + " T4 ";

///////////////////////////////////////////////////////////////////////////////////////////////////

if (M590.available()) //
{
char ch = ' ';
String val = "";

while (M590.available()) {
ch = M590.read();
val += char(ch); //
delay(5);
}

Serial.print("Neo send> ");
Serial.println(val);

////////////////////////////////////////////
if (val.indexOf("RING") > -1) //
{
if (val.indexOf("381641132255") > -1) // Broj sa koga se zove
{
Serial.println("Call my phone");
M590.println("ATH"); //
Serial.println("Disconnection");
delay(3000);
sms(MyString, String("+381641132255")); //
}
}
///////////////////////////////////////
}
delay(2000);

} //--(end main loop )---

/////////////////////////////////////////////

/*-----( Declare User-written Functions )-----*/
void displayTemperature(DeviceAddress deviceAddress) {
float tempC = sensors.getTempC(deviceAddress);

if (tempC == -127.00) // Measurement failed or no device found
{
lcd.print("Greska");
} else {
// lcd.print("C=");
lcd.print(tempC);
}
} // End printTemperature

float getTemperature(DeviceAddress deviceAddress) {
float tempX = sensors.getTempC(deviceAddress);
if (tempX == -127) {
tempX = 0;
}
return tempX;
} // End getTemperature

void sms(String text, String phone) //
{
Serial.println("Start SMS send");
M590.println("AT+CMGS=\"+381641132255\""); // broj na koji ide poruka
delay(500);
M590.print(text);
delay(500);
M590.print((char)26);
delay(500);
Serial.println("SMS send OK");
delay(2000);
}

// Nastavak sledi
Potpis
Kotao Majevica 32 KW , Ferolli gorionik SUN P7
Re: Arduino za pocetnike 08.03.2020. u 23:04 · pre 80 meseci #182
Bilo bi zgodnije da ti program podržava algoritam za pretraživanje senzora na mreži (na one-wire bus-u). Ti si ovako, u nano direktno upisao adrese trenutno aktivnih senzora. Šta se događa ako dodaš još jedan ili iz nekog razloga moraš da neki od njih zameniš? Tvoja arduino biblioteka već ima metod za ovu pretragu.
Potpis
gorankg
Re: Arduino za pocetnike 10.03.2020. u 22:28 · pre 80 meseci #183
Postoji ta mogućnost i program za automatsku detekciju senzora ali meni u ovom slučaju to nije bitno.
Već sam dodavao druge senzore i menjao postojeće.Nekako mi lakše da tako uradim.
Potpis
Kotao Majevica 32 KW , Ferolli gorionik SUN P7
Re: Arduino za pocetnike 13.03.2020. u 13:41 · pre 80 meseci #184
Lakše ti je da radiš dvostruki posao?
Prvo da iščitaš novi senzor pa da posle odradiš izmenu u programu unošenjem serijskog broja novog senzora?
Ne vidim šta je tu lakše.
Crkne ti jedan senzor, zameniš ga novim i ne razmišljaš i ništa ne moraš da reprogramiraš.
Potpis
--
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme