|
|
Elektronika.lt portalo forumas
Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo.
Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.
Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius,
kurie nesilaiko forumo taisyklių.
Pastebėjus nusižengimus, prašome pranešti.
Dabar yra 2024 12 23, 00:23. Visos datos yra GMT + 2 valandos.
|
|
|
|
Forumas » Mikrovaldikliai » Arduino pagalba
|
Jūs negalite rašyti naujų pranešimų į šį forumą Jūs negalite atsakinėti į pranešimus šiame forume Jūs negalite redaguoti savo pranešimų šiame forume Jūs negalite ištrinti savo pranešimų šiame forume Jūs negalite dalyvauti apklausose šiame forume
|
|
|
|
|
|
Arduino pagalba |
Parašytas: 2013 03 22, 08:41 |
|
|
|
Sveiki forumiečiai,
Reikalinga pagalba arduino srityje. Niekaip negaliu padaryti, kad per menu galėčiau nustatyti katilo cirkuliacinio siurblio įsijungimą pagal nustatyta temperatūra.
Mano kodas:
#include <LiquidCrystal.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <EEPROM.h>
#define ONE_WIRE_BUS 2 // DS18B20 to D2 pin
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
// select the pins used on the LCD panel
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
int Backlight =10; // lcd backlight to D10 pin
DeviceAddress Katilas = { 0x28, 0xBF, 0x84, 0x3E, 0x03, 0x00, 0x00, 0x50 };
DeviceAddress Boileris = { 0x28, 0xD0, 0x48, 0x3E, 0x03, 0x00, 0x00, 0xB4 };
// define some values used by the panel and buttons
#define btnRIGHT 4
#define btnUP 1
#define btnDOWN 2
#define btnLEFT 3
#define btnSELECT 5
#define btnNONE 0
float set=20.0;
int motor =12;
int keyPressed;
int adc_key_in = 0; //variable to store raw data from keypad
boolean menu_timer; //variable to test if menu timeout has completed
int read_Key_Pressed()
{ delay (200);
adc_key_in = analogRead(0);
//delay (200);
// read the value from the sensor
// my buttons when read are centered at these valies: 0, 144, 329, 504, 741
// we add approx 50 to those values and check to see if we are close
if (adc_key_in > 1000) return btnNONE; // We make this the 1st option for speed reasons since it will be the most likely result
if (adc_key_in < 50) return btnRIGHT;
if (adc_key_in < 195) return btnUP;
if (adc_key_in < 380) return btnDOWN;
if (adc_key_in < 555) return btnLEFT;
if (adc_key_in < 790) return btnSELECT;
return btnNONE; // when all others fail, return this...
}
void setup()
{
pinMode(Backlight, OUTPUT); //lcd LED kaip isejimas
analogWrite(Backlight, 125);
pinMode(motor,OUTPUT);
lcd.begin(16, 2); // start the library
lcd.begin(16,2);
lcd.print("Termometras v1.0");
lcd.setCursor(4,1);
lcd.print("2013");
delay(2000);// print title msg and pause for 2secs
lcd.clear();
main_routine();
}
void main_routine()
{ keyPressed == 0; //reset key to none
dispDefaultScreen();
keyPressed = read_Key_Pressed(); //scan for key press
//delay(100);
if (keyPressed == 5) //if a key is pressed
{
lcd.clear();
lcd.setCursor(2,0);
lcd.print("Temperatura");
lcd.setCursor(6,1);
lcd.print(set);
}
if (keyPressed == 4)
{
set=set+1;
}
if(keyPressed == 3)
{
set=set-1;
}
else main_routine(); //else loop back to top function
}
void printTemperature(DeviceAddress deviceAddress)
{
float tempC = sensors.getTempC(deviceAddress);
if (tempC == -127.00)
{
lcd.print("klaida");
} else {
lcd.print(tempC);
}}
void loop() //nothing in here
{
if(sensors.getTempC(Katilas)>set)
{
digitalWrite(motor,HIGH);
}
else if(sensors.getTempC(Katilas)<set)
{
digitalWrite(motor,LOW);
}
}
void dispDefaultScreen()
{
sensors.requestTemperatures();
lcd.setCursor(0,0);
lcd.print("Katilas ");
printTemperature(Katilas);
lcd.write(0b11011111); //laipsnio simbolis
lcd.print("C"); // celsijaus simbolis
lcd.setCursor(0,1);
lcd.print("Boileris ");
printTemperature(Boileris);
lcd.write(0b11011111);
lcd.print("C");
} |
|
|
|
|
|
|
Arduino pagalba |
Parašytas: 2013 03 22, 21:57 |
|
|
|
nu as nesu specas c# programavime,bet manau truksta sito
main_routine();
{
while (key!=5)
{
// darai ka nori kol nebus key==5
}
} |
|
|
|
|
|
Arduino pagalba |
Parašytas: 2013 03 23, 09:16 |
|
|
|
Pagal tavo pasiūlyta varijanta nepadėjo. |
|
|
|
|
|
Arduino pagalba |
Parašytas: 2013 03 23, 16:09 |
|
|
|
o tavo kodas isvis veikia? bentjau temperatura rodo.
Nu nesvarbu. neturiu po ranka ds1820.rytoj pabandysiu |
|
|
|
|
|
Arduino pagalba |
Parašytas: 2013 03 24, 10:44 |
|
|
|
Termometras veikia puikiai tik su nustatymais niekaip nesusitvarkau. |
|
|
|
|
|
Arduino pagalba |
Parašytas: 2013 06 20, 13:16 |
|
|
|
Sveiki,
Ar esat kasnors bvandes su arduino irasyti/nuskaityti duomenis is kasetes (senos muzikos kasetes). |
|
|
|
|
|
Arduino pagalba |
Parašytas: 2013 06 23, 09:03 |
|
|
|
Djsoldiers rašo: |
Sveiki,
Ar esat kasnors bvandes su arduino irasyti/nuskaityti duomenis is kasetes (senos muzikos kasetes). |
O kam to reikia?. Arduino dirba su SD kortom. |
|
|
|
|
|
Arduino pagalba |
Parašytas: 2013 06 23, 09:24 |
|
|
|
Vintikas rašo: |
Djsoldiers rašo: |
Sveiki,
Ar esat kasnors bandes su arduino irasyti/nuskaityti duomenis is kasetes (senos muzikos kasetes). |
O kam to reikia?. Arduino dirba su SD kortom. |
Ne, nu, blyn... Klausia apie Joną, o atsako apie sijoną...
Gal Tau ir nežinoma, tačiau, be muzikos, tokiose kasetėse praeitame tūkstantmetyje buvo įrašinėjami ir duomenys... Nesakau, kad būtent to (Sinclair ZX Spectrum duomenų) klausėjui reikia, bet ką gali žinoti?! |
|
|
|
|
|
Arduino pagalba |
Parašytas: 2013 06 23, 11:15 |
|
|
|
I kasete irasyti kaip tris pirstus apmyzt, is kasetes nuskaityti irgi netrabliema, galima ir issifruoti, tik laiko reikia, jei formatas neaiskus.
Bet jei programos autorius nesupranta kam Arduino turi loop() ir kilpuoja rekursija, tai kada jis ismoks atlikti elementarius dalykus ? |
|
|
|
|
|
Arduino pagalba |
Parašytas: 2013 06 23, 16:29 |
|
|
|
Valdulis rašo: |
Vintikas rašo: |
Djsoldiers rašo: |
Sveiki,
Ar esat kasnors bandes su arduino irasyti/nuskaityti duomenis is kasetes (senos muzikos kasetes). |
O kam to reikia?. Arduino dirba su SD kortom. |
Ne, nu, blyn... Klausia apie Joną, o atsako apie sijoną...
Gal Tau ir nežinoma, tačiau, be muzikos, tokiose kasetėse praeitame tūkstantmetyje buvo įrašinėjami ir duomenys... Nesakau, kad būtent to (Sinclair ZX Spectrum duomenų) klausėjui reikia, bet ką gali žinoti?! |
Koks tu blin protingas. aciu kad apsvietei. |
|
|
|
|
|
Arduino pagalba |
Parašytas: 2013 06 23, 16:40 |
|
|
|
Vintikas rašo: |
aciu kad apsvietei. |
Aš Tave nesvieteu, o apšviečiau.
Mokykis, ir Tu būsi protingas. |
|
|
|
|
|
Arduino pagalba |
Parašytas: 2013 06 23, 22:55 |
|
|
|
AlgisL rašo: |
I kasete irasyti kaip tris pirstus apmyzt, is kasetes nuskaityti irgi netrabliema, galima ir issifruoti, tik laiko reikia, jei formatas neaiskus.
Bet jei programos autorius nesupranta kam Arduino turi loop() ir kilpuoja rekursija, tai kada jis ismoks atlikti elementarius dalykus ? |
O kaip siulitum jungti ? |
|
|
|
|
|
|
Arduino pagalba |
Parašytas: 2013 06 24, 12:44 |
|
|
|
djsolder, ka jungti ?
jei mage prie arduino - tai per RCRC filtra/dalikli i mages IN bus isvedimas, o iejime vel RCRC filtras + operacinukas arba BC850C vietoje operacinuko.
OnChange pertrauktyje ivertini micros(), isvedant delayMicroseconds();
nepatikrintas pavyzdys, bet gal suveiks ir is 1 karto
Kodas: |
enum {NO_OP = 1, GET_SYNC0, GET_SYNCA, GET_LEN, WAIT_BYTE, BYTE_IN};
unsigned char lineInStatus = NO_OP;
unsigned char lineInChCnt = 0;
unsigned char lineInData;
unsigned char lineInBits;
unsigned int lineInSyncs;
#define lineIn 3 // INT1
#define lineOut 4
void lineOutByte(char data){
for(char b=0x80; b; b>>=1){
digitalWrite(lineOut, !digitalRead(lineOut));
delayMicroseconds(500);
if(b & data) digitalWrite(lineOut, !digitalRead(lineOut));
delayMicroseconds(500);
}
}
void lineOutBlock(char *buffer, unsigned int count){
char checkSum=0;
for(char t=1000/8; --t;) lineOutByte(0);
for(char t=10; --t;) lineOutByte(0xAA);
lineOutByte(count >> 8);
lineOutByte(count & 0xFF);
for(; count; buffer++, count--){
lineOutByte(*buffer);
checkSum ^= *buffer;
}
lineOutByte(checkSum);
digitalWrite(lineOut, !digitalRead(lineOut));
}
void lineInChange(){
static unsigned long time;
if(lineInStatus == NO_OP) return;
unsigned long t = micros();
long changeDelay = t - time;
time = t;
if((changeDelay > 1500) || (changeDelay < 250)){
if(lineInStatus != GET_SYNC0) lineInStatus = NO_OP;
return;
}
if(lineInChCnt == 0) lineInData <<= 1;
if(changeDelay > 750){
if(lineInChCnt == 1){
lineInStatus = NO_OP;
return;
}
if(lineInBits < 255) lineInBits++;
}else
if(++lineInChCnt > 1){
lineInChCnt = 0;
lineInData++;
if(lineInBits < 255) lineInBits++;
}
if(lineInBits >= 8){
if(lineInStatus == GET_SYNC0){
if(lineInData == 0xAA){
lineInBits = 0;
if(lineInSyncs >= 1000/8/2){
lineInStatus = GET_SYNCA;
lineInSyncs = 0;
}else{
lineInStatus = NO_OP;
return;
}
}
else{
if(lineInData == 0) lineInSyncs++;
else lineInSyncs = 0;
return;
}
}
if(lineInStatus == GET_SYNCA){
if(lineInData != 0xAA){
lineInStatus = NO_OP;
return;
}
if(++lineInSyncs >= 10){
lineInStatus = GET_LEN;
lineInBits = 0;
return;
}
}
lineInStatus == BYTE_IN;
lineInBits = 0;
}
}
int lineInBlock(char *buffer, unsigned int bufSize){
unsigned int count, bytesRead=0;
char checkSum=0;
lineInChCnt = 0;
lineInSyncs = 0;
lineInStatus = GET_SYNC0;
while(lineInStatus != GET_SYNCA)
if(lineInStatus == NO_OP) return 0;
while(lineInStatus == GET_SYNCA)
if(lineInStatus == NO_OP) return 0;
count = lineInData << 8;
while(lineInStatus == GET_LEN)
if(lineInStatus == NO_OP) return 0;
count += lineInData;
if(count > bufSize) return 0;
while(bytesRead < count){
lineInStatus = WAIT_BYTE;
while(lineInStatus != WAIT_BYTE);
if(lineInStatus == NO_OP) return 0;
checkSum ^= lineInData;
buffer[bytesRead] = lineInData;
bytesRead++;
}
lineInStatus = WAIT_BYTE;
while(lineInStatus != WAIT_BYTE);
if(lineInStatus != BYTE_IN){
lineInStatus = NO_OP;
return 0;
}
lineInStatus = NO_OP;
if(checkSum != lineInData) return 0;
else return bytesRead;
}
void setup(){
pinMode(lineOut, OUTPUT);
attachInterrupt(1, lineInChange, CHANGE);
}
void loop(){
char buffer[100];
lineOutBlock(buffer, 100);
int bytesRead = lineInBlock(buffer, 100);
}
|
|
|
|
|
|
|
|
|
|
|
|
Google paieška forume |
|
|
Naujos temos forume |
|
|
FS25 Tractors
Farming Simulator 25 Mods,
FS25 Maps,
FS25 Trucks |
|
ETS2 Mods
ETS2 Trucks,
ETS2 Bus,
Euro Truck Simulator 2 Mods
|
|
FS22 Tractors
Farming Simulator 22 Mods,
FS22 Maps,
FS25 Mods |
|
VAT calculator
VAT number check,
What is VAT,
How much is VAT |
|
LEGO
Mänguköök,
mudelautod,
nukuvanker |
|
Thermal monocular
Thermal vision camera,
Night vision ar scope,
Night vision spotting scope |
|
FS25 Mods
FS25 Harvesters,
FS25 Tractors Mods,
FS25 Maps Mods |
|
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija |
|
FS25 Mods
FS25 Maps,
FS25 Cheats,
FS25 Install Mods |
|
GTA 6 Weapons
GTA 6 Characters,
GTA 6 Map,
GTA 6 Vehicles |
|
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps |
|
ATS Trailers
American Truck Simulator Mods,
ATS Trucks,
ATS Maps |
|
|
|