|
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
tilz0R Član
Pridružen-a: Čet 31 Maj 2012 15:39 Prispevkov: 898 Aktiv.: 6.24 Kraj: Črnomelj
|
Objavljeno: Ned Avg 10, 2014 2:49 pm Naslov sporočila: |
|
|
Preberi temperaturo.
Če je večja od 40, izklopi regulacijo (pin low)
Ko pa manjša od 37 jo pa nazaj vklopi.
Dva if stavka.
_________________ Knowledge sharing is caring.
majerle.eu | stm32f4-discovery.net |
|
Nazaj na vrh |
|
|
damjango Član
Pridružen-a: Pon 03 Sep 2012 7:56 Prispevkov: 721 Aktiv.: 5.12 Kraj: Murska Sobota
|
Objavljeno: Ned Avg 10, 2014 3:45 pm Naslov sporočila: |
|
|
Koda: |
if (temp_nas_zg < temp_pov_ce){
digitalWrite(ogrevanje,HIGH);
}
if (temp_nas < temp_pov_ce){
digitalWrite(ogrevanje,LOW);
}
|
Še vedno ne deluje vredu.
Prižigan z logično 0. Spremenljivka temp_nas_zg je zgornja meja, temp_nas je pa spodnja meja. zgornjo mejo sem določil, tako, da se k spodnji prišteje 3.
|
|
Nazaj na vrh |
|
|
igo Član
Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3638 Aktiv.: 17.11
|
Objavljeno: Ned Avg 10, 2014 5:34 pm Naslov sporočila: |
|
|
Čisto enostavno
Koda: |
if(temperatura > 40)
{
digitalWrite(izhod_grelec, HIGH);
}
if(temperatura < 37)
{
digitalWrite(izhod_grelec, LOW);
} |
_________________ Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor |
|
Nazaj na vrh |
|
|
int47 Član
Pridružen-a: Pon 15 Dec 2003 0:10 Prispevkov: 2066 Aktiv.: 9.30 Kraj: Ljubljana
|
Objavljeno: Ned Avg 10, 2014 5:37 pm Naslov sporočila: |
|
|
damjango je napisal/a: |
Še vedno ne deluje vredu. |
En "<" je narobe, zato se pri
Koda: |
temp_pov_ce > temp_nas > temp_nas_zg |
izvedeta oba if stavka.
|
|
Nazaj na vrh |
|
|
skalpel Član
Pridružen-a: Tor 31 Jan 2012 19:46 Prispevkov: 432 Aktiv.: 2.92 Kraj: Šenčur
|
Objavljeno: Ned Avg 10, 2014 6:29 pm Naslov sporočila: |
|
|
igo je napisal/a: |
Čisto enostavno
Koda: |
if(temperatura > 40)
{
digitalWrite(izhod_grelec, HIGH);
}
if(temperatura < 37)
{
digitalWrite(izhod_grelec, LOW);
} |
|
Ravno obratno mora bit
|
|
Nazaj na vrh |
|
|
tilz0R Član
Pridružen-a: Čet 31 Maj 2012 15:39 Prispevkov: 898 Aktiv.: 6.24 Kraj: Črnomelj
|
Objavljeno: Ned Avg 10, 2014 6:38 pm Naslov sporočila: |
|
|
damjango je napisal/a: |
Prižigan z logično 0. |
_________________ Knowledge sharing is caring.
majerle.eu | stm32f4-discovery.net |
|
Nazaj na vrh |
|
|
skalpel Član
Pridružen-a: Tor 31 Jan 2012 19:46 Prispevkov: 432 Aktiv.: 2.92 Kraj: Šenčur
|
Objavljeno: Ned Avg 10, 2014 6:39 pm Naslov sporočila: |
|
|
tilz0R je napisal/a: |
damjango je napisal/a: |
Prižigan z logično 0. |
|
Spregledal
|
|
Nazaj na vrh |
|
|
damjango Član
Pridružen-a: Pon 03 Sep 2012 7:56 Prispevkov: 721 Aktiv.: 5.12 Kraj: Murska Sobota
|
Objavljeno: Sre Okt 08, 2014 5:54 pm Naslov sporočila: |
|
|
Zanima me, zakaj se mi dogaja, da vedno program skače nazaj v setup funkcijo?
Spodaj je program za oddajni modul in sprejemni modul
Koda: |
//first included your library
#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
int bytearraytoint(byte * array)
{
int value=0;
value |= array[0];
value |= array[1]<<8;
value |= array[2]<<16;
value |= array[3]<<24;
return value;
}
void setup(){
Serial.begin(57600);
Mirf.spi = &MirfHardwareSpi;
Mirf.csnPin = 7; //(This is optional to change the chip select pin)
Mirf.cePin = 8; //(This is optional to change the enable pin)
Mirf.init();
Mirf.setTADDR((byte *)"serv1");
Mirf.payload = 32;
Mirf.config();
Serial.println("<Listening ... "); // "Beginning ..." on sender, or "Listening ..." on sever (Receiver)
}
void loop(){
byte data[4];
if(!Mirf.isSending() && Mirf.dataReady())
{
Mirf.getData((byte *) &data);
Serial.println(bytearraytoint((byte *)&data));
Serial.println("\n");
Serial.println("\n");
}
}
|
Koda: |
#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
int sensorPin = A0;
int sensorValue = 0; // variable to store the value coming
#include "DHT.h"
#define DHTPIN 2 // what pin we're connected to
// Uncomment whatever type you're using!
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302)
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
// Connect pin 1 (on the left) of the sensor to +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
DHT dht(DHTPIN, DHTTYPE);
void setup()
{
Serial.begin(57600);
dht.begin();
Mirf.spi = &MirfHardwareSpi;
Mirf.csnPin = 7; //(This is optional to change the chip select pin)
Mirf.cePin = 8; //(This is optional to change the enable pin)
Mirf.init();
Mirf.setTADDR((byte *)"serv1");
Mirf.payload = 32;
Mirf.config();
Serial.println("Beginning ... "); // "Beginning ..." on sender, or "Listening ..." on sever (Receiver)
}
void loop()
{
float h = dht.readHumidity();
float t = dht.readTemperature();
sensorValue = analogRead(sensorPin);
Mirf.send((byte *) sensorValue);
delay(1000);
Mirf.send((byte *) (int)t);
delay(1000);
Mirf.send((byte *) (int)h);
delay(1000);
Serial.println(sensorValue);
Serial.println(t);
Serial.println(h);
}
|
|
|
Nazaj na vrh |
|
|
damjango Član
Pridružen-a: Pon 03 Sep 2012 7:56 Prispevkov: 721 Aktiv.: 5.12 Kraj: Murska Sobota
|
Objavljeno: Sre Okt 08, 2014 5:56 pm Naslov sporočila: |
|
|
še slika
Opis: |
|
Velikost datoteke: |
329.67 KB |
Pogledana: |
32 krat |
|
|
|
Nazaj na vrh |
|
|
ssdzkrez Član
Pridružen-a: Sre 12 Jan 2011 15:13 Prispevkov: 401 Aktiv.: 2.49 Kraj: Hrastnik
|
Objavljeno: Čet Okt 09, 2014 7:17 am Naslov sporočila: |
|
|
Program ti zaradi napake v loop() resetira mikrokontroler in void.setup() se ponovno zažene. Drugače pa je ta del programa namenjen, da se izvrši samo ob zagonu. Verjetno presežeš neko vrednost spremenljivke, mogoče napaka v knjižici.
|
|
Nazaj na vrh |
|
|
damjango Član
Pridružen-a: Pon 03 Sep 2012 7:56 Prispevkov: 721 Aktiv.: 5.12 Kraj: Murska Sobota
|
Objavljeno: Sre Okt 22, 2014 10:14 am Naslov sporočila: |
|
|
Ukvarjam se z merilnikom induktivnosti s pomočjo aduinota in mi ne dela. Spodaj je programska koda in preprosto vezje z operacijskim ojačevalnikom.
Koda: |
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x20 //_I2C naslov cipa PCF8574
//_____________prikljucitev PCF8574 cipa na lcd prikazovalnik
#define BACKLIGHT_PIN 7 // pin 12 na PCF8574
#define En_pin 4 // pin 9 na PCF8574
#define Rw_pin 5 // pin 10 na PCF8574
#define Rs_pin 6 // pin 11 na PCF8574
#define D4_pin 0 // pin 4 na PCF8574
#define D5_pin 1 // pin 5 na PCF8574
#define D6_pin 2 // pin 6 na PCF8574
#define D7_pin 3 // pin 7 na PCF8574
#define LED_OFF 0
#define LED_ON 1
LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);
//13 is the input to the circuit (connects to 150ohm resistor), 11 is the comparator/op-amp output. //reibot.org for guide
double pulse, frequency, capacitance, inductance;
void setup(){
Serial.begin(9600);
lcd.begin(16,2);
lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE); // vklop osvetlitve LCD zaslona
lcd.setBacklight(LED_ON);
pinMode(11, INPUT);
pinMode(13, OUTPUT);
// delay(200);
}
void loop(){
digitalWrite(13, HIGH);
delay(5);//give some time to charge inductor.
digitalWrite(13,LOW);
delayMicroseconds(100);
pulse = pulseIn(11,HIGH,5000);
if(pulse > 0.1){
capacitance = 95.E-8; //Use a multimeter to measure the exact value of capacitance for more accurate readings
frequency = 1.E6/(2*pulse);
inductance = 1./(capacitance*frequency*frequency*4.*3.14159*3.14159);
inductance *= 1E6; //note that this is the same as saying inductance = inductance*1E6
if(inductance>=1000)
{
lcd.print("Inductance");
lcd.setCursor(2,1);
lcd.print ((inductance/1000)-0.5); lcd.print ("mH" );
delay(300);
lcd.clear();
}
else {
lcd.print("Inductance");
lcd.print (inductance + 10); lcd.print ("uH" );
delay(300);
lcd.clear();
}
}
else if(pulse < 0.1)
{
lcd.print("Insert Inductor");
delay(500);
lcd.clear();
}
}
|
Opis: |
|
Download |
Ime datoteke: |
lm339.png |
Velikost datoteke: |
16.07 KB |
Downloadano: |
8 krat |
|
|
Nazaj na vrh |
|
|
damjango Član
Pridružen-a: Pon 03 Sep 2012 7:56 Prispevkov: 721 Aktiv.: 5.12 Kraj: Murska Sobota
|
Objavljeno: Sre Okt 22, 2014 7:49 pm Naslov sporočila: |
|
|
Deluje, napaka je bila, ker se hotel izmeriti tuljavo z induktivnostjo 1,5uH, kar je bila premajhna vrednost. Doma sem pa imel še eno malo večjo z 500mH in deluje, samo dobim več kot 30% napake, pri tej tuljavi je pokazalo 680mH.
|
|
Nazaj na vrh |
|
|
damjango Član
Pridružen-a: Pon 03 Sep 2012 7:56 Prispevkov: 721 Aktiv.: 5.12 Kraj: Murska Sobota
|
Objavljeno: Sre Okt 22, 2014 7:56 pm Naslov sporočila: |
|
|
S pomočjo ustreznega kondenzatorja se da umeriti in potem kaže točno vrednost.
|
|
Nazaj na vrh |
|
|
Branez Moderator
Pridružen-a: Pon 14 Apr 2003 7:21 Prispevkov: 7768 Aktiv.: 34.98 Kraj: Koprivnica HR
|
Objavljeno: Sre Okt 22, 2014 7:56 pm Naslov sporočila: |
|
|
Kako pa veš da je ta 500mH res te vrednosti?
_________________ The true sign of intelligence is not knowledge but imagination.
Creativity is intelligence having fun!
Albert Einstein |
|
Nazaj na vrh |
|
|
damjango Član
Pridružen-a: Pon 03 Sep 2012 7:56 Prispevkov: 721 Aktiv.: 5.12 Kraj: Murska Sobota
|
Objavljeno: Sre Okt 22, 2014 7:59 pm Naslov sporočila: |
|
|
Tako vem, ker sem jo naročil iz Farnela in piše na vrečki, ki je iz farnella.
|
|
Nazaj na vrh |
|
|
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 49 dni
Powered by phpBB © 2001, 2005 phpBB Group
|