millis () kullanımı yardımcı olurmusunuz
kodlar derlenıyo fakat millis bir turlü ıstedım gıbı calısmadı out ve h2 tanımlı millisler hersey dogru gıbı hdt bır buzzera baglı 100ms sınyal vercek out ıse 500ms acık tutacak ve kapatcak cıkısı
unsigned long currentTime ; // millis tanımlama :
unsigned long h2,out = 0; // millis tanımlama:
#include "ADS1X15.h"
ADS1115 ADS(0x48);
int rdtx=0;
int rdtmax=900;
const byte trp=2; // pnp tr out:
const byte trn=3; // npn tr cıkış :
const byte kazancled=4; // led flosör output:
const byte npoutled=5; // led pnp / npn cıkısı:
const byte pwrled=6; // led gırıs :
const byte hdt = 13; // flas gırış:
const byte outcompv=8; // ao-a1 karsılastırma cıkış :
const byte inptpp = 9; // 8 out koprusu 1-0 gırış:
const byte setswic=10; // pwm cıkısı:
const byte incompz = 12; // buton 0 pot gırış:
const byte outcompb=11; // out cıkış :
void setup(void) {
pinMode ( kazancled , OUTPUT ); // s cıkıs :
pinMode (rdtx , INPUT);
pinMode ( trp, OUTPUT ); // s :
pinMode ( trn , OUTPUT ); // s cıkıs :
pinMode (npoutled,OUTPUT); // sinyal cıkış NPN ve PNP out :
pinMode (pwrled,OUTPUT); // power ve rdt flaşör :
pinMode(hdt, OUTPUT); // modlar :
pinMode(incompz, INPUT); // 0 gırıs pot :
pinMode ( outcompb , OUTPUT ); // s :
pinMode ( outcompv , OUTPUT ); // s :
pinMode( inptpp, INPUT); // modlar :
pinMode ( setswic, OUTPUT ); // s :
digitalWrite(setswic,LOW);
// ADS1115
ADS.begin();
ADS.setGain(0);
ADS.setMode(1);
ADS.setDataRate(6);
ADS.readADC(0);
ADS.readADC(1);
}
void loop(void) {
unsigned long currentTime = millis();
int16_t tension_A0 = ADS.readADC(0);
int16_t tension_A1 = ADS.readADC(1);
byte val0 = map(tension_A0, 0, 32767, 0, 255);
analogWrite(setswic, val0);
{ int rdtx = analogRead(A6);
if (rdtx <= rdtmax )
{analogWrite(pwrled, 200);}
else
{analogWrite(pwrled, 0);}
{ int incompz = digitalRead(12);
if (digitalRead(12) == 0)
{digitalWrite(outcompb, 1);}
else
{digitalWrite(outcompb, 0);}
{ int incompz = digitalRead(12);
if (digitalRead(12) == 1 && currentTime - h2 > 100 )
{digitalWrite(hdt, 1); }
else
{digitalWrite(hdt, 0); h2=currentTime ; } // flaş out on to mıllıs of :
{
int16_t tension_A0 = ADS.readADC(0);
int16_t tension_A1 = ADS.readADC(1);
ADS.setGain(0);
ADS.setMode(1);
ADS.setDataRate(6);
if (tension_A0 <= tension_A1 && incompz ==0 )
{digitalWrite (outcompv ,0); }
else
{digitalWrite (outcompv ,1);}
bool inptpp = digitalRead(9); bool incompz = digitalRead(12);
if (inptpp == 1 && incompz ==0 && currentTime - out > 500 )
{digitalWrite(trp, 1); digitalWrite(trn, 1);digitalWrite(npoutled, 1); out =currentTime; }
else
{digitalWrite(trp, 0); digitalWrite(trn, 0); digitalWrite(npoutled, 0); delay (1);}
}
}
}
}
}
Lm35 kodları mcp4725 uyarlaması
lm35 kodlar gıbı genelde 10bıt anolog gırısten hesaplanıyor buda referans voltajının hesaba dahıl edılerek yapmıslar mcp 4725 12 bıt cıkısını hesaplama yaptırmak ıstıyorum bu mumkunmu basıt bır uyarlama yapsak normalde derleme yapıyor fakat gercekte denemedım
lm35 programını mcp4725 örneğine uyarlayabilir miyim? mcp4725 referans voltajını gırıs besleme voltajı kabul eder
lm35 150 derece ölçebilir buna göre hesap yapar ve 10mv'de bir derece algılar mesela mcp4725'te her 10mv'de bir voltaj çıkışı hesaplanabilir mi,
4095/10mv=409.5 derece ölcum karsılında voltaj karsılına cevırecek,,
dönüşüm çarpanı, 4095x10=40.950
benzer bir hesap yapmak istiyorum, bu mümkunmu yardımcı olursanız sevınırım
lm35 ornek kodu
int val;
int tempPin = 1;
void setup()
{
Serial.begin(9600);
}
void loop()
{
val = analogRead(tempPin);
float mv = ( val/1024.0)*5000;
float cel = mv/10;
delay(1000);
mcpıcın ornek yapmak ıstedım kod
#include<Wire.h> //Include kutuphane ı2 data Wire
#define MCP4725 0X60
unsigned long adc; // 12 bıt :
unsigned long buffer[3]; // adc buffer tampon :
float cel ;
void setup()
{
pinMode ( set, OUTPUT ); // swiccc :
pinMode ( trp, OUTPUT ); // swiccc
void loop() {
adc = analogRead(A6); // anolog :
adc = map(adc,0,1023,4095,0); // voltaj :
buffer[0] = 0b01000000; //Set bit buffer0 with:
buffer[1] = adc >> 4; //Puts :
buffer[2] = adc << 4; //Puts 2 bıt Least:
float mv = ( adc/4095.0)*5000;
float cel = mv/10;
Wire.beginTransmission (0x60); // I2C bus:
Wire.write(buffer[0]); //Sends :
Wire.write(buffer[1]); //Sends MSB to I2C :
Wire.write(buffer[2]); //Sends LSB to I2C:
Wire.endTransmission(); //Ends son verı hattı :
}
Son Giriş: 2 yıl önce
Son Mesaj Zamanı: 2 yıl
Mesaj Sayısı: 4
Gerçek Toplam Mesaj Sayısı: 4
İkinci El Bölümü Mesajları: 0
Konularının görüntülenme sayısı: 334 (Bu ay: 13)
Toplam aldığı artı oy sayısı: 0 (Bu hafta: 0)
En çok mesaj yazdığı forum bölümü: Elektronik ve Mekanik