Arduino ile led flaşörlü, bluetooth ve sd kart loglamalı voltmetre - kendime ;)

Emre Kaman

Moderator
Katılım
21 Kas 2013
Mesajlar
6,273
Tepkime puanı
12,103
Yaş
42
Konum
İzmir
İlgi Alanı
Heli
Bu uygulamayı tamamen kendi güncel ihtiyaçlarıma göre, gerek Zafer Şahin'den kopyalayarak, gerekse uygulama örneklerini inceleyip taklit ve tahmin ederek oluşturmaya çalıştım. Sd kart loglama kısmını, sdcard modülüm henüz olmadığı için test edemiyorum. Umarım çalışır :) Kodun yapmasını umduğum iş özetle 1,5 saniyede bir iki kere led çakmak, bu sırada okuduğu voltaj değerlerini 0,1 sn arayla hem seri bağlantı, hem bt bağlantı üzerinden bilgisayara göndermek, hem de sd karta kaydetmek. Zafer abinin voltajı okuyan kodundan " V" ekini çıkardım ki, daha sonra logdan dataları excell'e atıp bir grafik almak kolay olsun. Hatta bir yerlerde grafik çizimini de arduinoya yaptırabileceğimi okumuştum sanırım, bir sonraki adım da bu olsun :D

Kodu bir inceleyip olası yanlışları gösterirseniz çok sevinirim. Dediğim gibi sd kısmını deneme şansım olmadı ve daha bugün öğrendim. Saygılar..

Kod:
/*

 The circuit:
 ** ledpin 13
 ** voltagepin 2
 * SD card attached to SPI bus as follows:
 ** MOSI - pin 11
 ** MISO - pin 12
 ** CLK - pin 13
 ** CS - pin 4 (ethernet shield kullanirken) (ethernet shield kullanilmadiginda 10 mu kullanilacak?)

 */

#include <Event.h>
#include <Timer.h>
#include <SoftwareSerial.h>
#include <SPI.h>
#include <SD.h>

const int chipSelect = 4;
SoftwareSerial btSerial(7, :coolxf:; // Yazilimsal seri port nesnesini sıra ile RX, TX pinleri ile olustur
Timer t;
int ledpin = 13;
int voltagePin = 2;  // Analog voltaj olcum pini
int vRefVal = 0;  // Referans voltaj degeri
float vTruVal = 0;  // Gercek voltaj degeri

void setup()  
{
  Serial.begin(9600); // Donanımsal seri portu 9600 Baud hizinda baslat
  btSerial.begin(9600); // Yazilimsal seri portu 9600 Baud hizinda baslat
  t.every(100, takeReading); // her 100ms'de bir okuma alacak
  pinMode(ledpin, OUTPUT);  
  t.oscillate(ledpin, 150, LOW, 2);
  t.after(1500, LOW);
  Serial.print("Initializing SD card...");
  // make sure that the default chip select pin is set to
  // output, even if you don't use it: (ethernet shield kullanilmadiğinda bu satira yine de gerek var mi?)
  pinMode(10, OUTPUT);

  // see if the card is present and can be initialized:
  if (!SD.begin(chipSelect)) {
    Serial.println("Card failed, or not present");
    // don't do anything more:
    return;
  }
  Serial.println("card initialized.");
}

void loop() {
  t.update();
  vRefVal = analogRead(voltagePin); // Voltaj pinini oku
  vRefVal = map(vRefVal, 0, 1023, 0, 5000); // Okunan 0-1023 arasındaki analog degeri, 0 - 5000 milivolt ile eslestir.
  vTruVal = ((float)vRefVal * 16) / 1000 ; //Bulunan ve milivolt cinsinden voltaj degerini, voltaj bolucudeki 16 kat degerine gore ayarla
  }
void takeReading() {   //100ms'de bir okuduğu değeri yazacak
  Serial.print(vTruVal); //Voltaj degerini seri port uzerinden bilgisayara gonder
  btSerial.print(vTruVal); //Voltaj degerini yazılımsal seri port uzerinden bluetooth a gonder
  // open the file. note that only one file can be open at a time,
  // so you have to close this one before opening another.
  File dataFile = SD.open("voltajlog.txt", FILE_WRITE);

  // if the file is available, write to it:
  if (dataFile) {
    dataFile.println(vTruVal);
    dataFile.close();
  }
  // if the file isn't open, pop up an error:
  else {
    Serial.println("error opening datalog.txt");
  }
}
 
Arduino ile led flaşörlü, bluetooth ve sd kart loglamalı voltmetre - kendime ;)

Emre senin gidişatı da hic iyi görmüyorum kardeşim :) :)


Sent from my iPhone using Tapatalk
 
Mehmet Kucuksari' Alıntı:
Emre senin gidişatı da hic iyi görmüyorum kardeşim :) :)


Sent from my iPhone using Tapatalk

Ehehe ;D

Abi benim böyle bi sorunum var. Bişeyi kafaya takınca uyku falan uyuyamıyorum, en azından bir miktar yol katetmeden rahat edemiyorum. Bilgisayar ekranına bakmaktan başım ağrımaya başladı bir iki saat önce. Bu yukardaki gadget güzel bir şekilde çalışırsa model üstünde çok işime yarayacak.
 
Arduino ile led flaşörlü, bluetooth ve sd kart loglamalı voltmetre - kendime ;)

Ohhhşşş projeye bakkk... :)
Bu compilerin cep telde çalışanı yok mudur acep? :)
 
Arduino ile led flaşörlü, bluetooth ve sd kart loglamalı voltmetre - kendime ;)

Sümer Yamaner' Alıntı:
Ohhhşşş projeye bakkk... :)

:lol: :lollol:

Sümer Yamaner' Alıntı:
Bu compilerin cep telde çalışanı yok mudur acep? :)

IOS için bilmiyorum ama Android için ArduinoDroid isimli bir IDE var. Arduino'ya USB kablosundan kod gönderebilmek için, cep tefonunun işletim sisteminin minimum Android 4.2 olması ve OTG destekli olması gerekiyor.

Eğer bu özelliklerden biri yoksa, bluetooth üzerinden de Android'e bağlanabilirsiniz, tabii bunun için baud rate değerini ve hardware serial pinlerini bir miktar mıncıklamak gerekiyor... Az ama ...
 
Arduino ile led flaşörlü, bluetooth ve sd kart loglamalı voltmetre - kendime ;)

Buyur... Araba kullanırken mesaj yazıyordum. Artık kod yazacağım demek ki. :D