Serummatik

Serummatik projemin dokümanlarını sizlerle paylaşmak isterim.Projenin ayrıntılı anlatımı videoda yapılmıştır. Serum takılan hastanın ,serum doluluk oranını artık hastanın yanına gitmeden anlayabileceğiz. Serumun bitmek üzere olduğunu serummatik sayesinde anlayacağız. İstenmeyen görüntülere ve hastanın serumun bitmesine yakın “hemşire gelecek mi bu bitmek üzere” içsel konuşmasına son vereceğiz.



VERİCİ DEVRE ŞEMASI
ALICI DEVRE ŞEMASI

VERİCİ YAZILIM

#include <SPI.h>    //nRF24L01 ile haberleşmek için standart SPI kütüphanesini ekliyoruz.
#include "RF24.h"   //nRF24L01'in ana kütüphanesini ekliyoruz.
#include "nRF24L01.h"


#include "hx711.h"
Hx711 scale(A1, A0);
int gram = 0;




int veri = 0; //Sensörün bağlandığı pini tanımlıyoruz.

int data[1];           //Data isminde bir dizi tanımlıyoruz ve gönderilecek datayı belirtiyoruz.

#define ce 9
#define csn 10

RF24 radio(ce, csn);    //RF24 kütüphanesinin kullanacağı CE ve CSN pinlerini tanımlıyoruz.

const uint64_t pipe = 0xE8E8F0F0E1LL; //Alıcıyla iletişim için bir pipe adresi tanımlıyoruz.

#define yesil 4
#define mavi 5
#define kirmizi 6
void setup(void) {
  Serial.begin(9600);          //Gönderilen datayı okumak için seri iletişimi başlatıyoruz.


  pinMode(yesil, OUTPUT);
  pinMode(kirmizi, OUTPUT);
  pinMode(mavi, OUTPUT);
  pinMode(ce, OUTPUT);
  pinMode(csn, OUTPUT);
  scale.setOffset(8459800);
  scale.setScale(100.99f);

  radio.begin();               //nRF24 iletişimini başlatıyoruz.
  radio.openWritingPipe(pipe); //Programın data göndereceği alıcının adresini ayarlıyoruz.

}

void loop(void) {
  digitalWrite(mavi, LOW);
 radio.write(data, sizeof(data)); //Data paketindeki tüm data nRF24L modülüyle transfer edilecek.
  veri++;
   if(veri == 10)
   {
    
  digitalWrite(mavi, HIGH);
  gram = scale.getGram(); 
  data [0] = gram ;  //Data paketindeki data sensörden okunsun.
  Serial.println(data [0]);        //Okunan data[0] seri monitörde görüntülenebilsin.
  
veri=0;
   }
delay(10);
  if (gram > 10)
  {
    digitalWrite(kirmizi, LOW);
    digitalWrite(yesil, HIGH);
  
  }
  if (gram <= 10)
  {
    digitalWrite(kirmizi, HIGH);
    digitalWrite(yesil, LOW);
  
  }









}

ALICI YAZILIM

#include <SPI.h>
#include "RF24.h"      //nRF24L01'in ana kütüphanesi.
#include "nRF24L01.h"


int data[1];          //Data isminde bir dizi tanımlıyoruz ve gönderilecek datayı belirtiyoruz.


RF24 radio (9, 10);  //nRF24L modülünün CE ve CSN pinlerini tanımlıyoruz.


const uint64_t pipe = 0xE8E8F0F0E1LL;  //Verici ile iletişim için pipe adresini tanımlıyoruz.




#include <LiquidCrystal.h>


//               (Rs, E, D4, D5, D6 ,D7)
LiquidCrystal lcd(7 , 6, 5 , 4 , 3 , 2);
int kirmizi = A3;
int mavi = A4;
int yesil = A5;
int buzzer = A0;
int buton_pin = A1;
int buton;
int ses=0;

int serum_bos = 50;
int serum_dolu;
int ilk_gelen = 1;
int serum_agirlik = 0;

void setup() {

  pinMode(kirmizi, OUTPUT);
  pinMode(mavi,  OUTPUT);
  pinMode(yesil,  OUTPUT);
  pinMode(buzzer,  OUTPUT);
  pinMode(buton,  INPUT);

  Serial.begin(9600);             //Seri iletişimi başlatıyoruz.

  lcd.begin(16, 2);

  radio.begin();                  //nRF24 iletişimini başlatıyoruz.
  radio.openReadingPipe(1, pipe); //Programın data göndereceği alıcının adresini ayarlıyoruz.
  radio.startListening();


  lcd.setCursor (0, 0);
  lcd.println("***SERUMMATIK***");
  lcd.setCursor (0, 1);
  lcd.println(">>>>>>>><<<<<<<<");
delay(1000);
  lcd.setCursor (0, 0);
  lcd.println("BAGLANTI        ");
  lcd.setCursor (0, 1);
  lcd.println("KURULUYOR       ");


}

void loop() {

  digitalWrite(mavi, HIGH);

  buton = digitalRead(buton_pin);
  if (radio.available () ) {

    radio.read(data, sizeof(data));  //Gelen datayı oku
    Serial.println(data[0]);         //Gelen datayı seri monitörde göster.

    if (ilk_gelen == 1)
    {
      serum_dolu = data[0] + 23;
      ilk_gelen = 0;
    }
    digitalWrite(mavi, LOW);


    delay(50);
  }
  serum_agirlik = data[0] + 23;

  int yuzde = map(abs(serum_agirlik), 0, serum_dolu, 0, 100);

//    lcd.setCursor (0, 1);
//    lcd.print(serum_agirlik);
//    lcd.print("    ");
//    lcd.print(serum_dolu);
//    lcd.print("   ");
//    lcd.print(yuzde);
//    lcd.print("   ");
  if (buton == HIGH)
  {
 
  lcd.print("Ses OFF");
    ses++;
    delay(500);
    if(ses>1)
    ses=0;
  }

  lcd.setCursor (0, 0);
  lcd.println(" Serum  Doluluk ");
  lcd.setCursor (0, 1);
  lcd.print("%");
  lcd.print(yuzde);
  lcd.print("       ");




if (ses==0 )
  {
  lcd.setCursor (9, 1);
  lcd.print("Ses ON ");
  }

if (ses==1 )
  {
  lcd.setCursor (9, 1);
  lcd.print("Ses OFF");
  }

    
if (ses==0 && yuzde <10 )
  {
  lcd.setCursor (9, 1);
  lcd.print("Ses ON ");

int bekle = map(abs(yuzde), 0, 9, 0, 200);

  
    digitalWrite(yesil, LOW);
    digitalWrite(kirmizi, HIGH);
    digitalWrite(buzzer, HIGH);
    delay (100);
    digitalWrite(kirmizi, LOW);
    digitalWrite(buzzer, LOW);
    delay (bekle);
  }
if (ses==1 && yuzde <10)
  {
  lcd.setCursor (9, 1);
  lcd.print("Ses OFF");
  
int bekle = map(abs(yuzde), 0, 9, 0, 200);
    digitalWrite(yesil, LOW);
    digitalWrite(kirmizi, HIGH);
    delay (100);
    digitalWrite(kirmizi, LOW);
    delay (bekle);
  
  }

 
if (yuzde >=10)
{
  
    digitalWrite(yesil, HIGH);
}



}

Sosyal Medyada Paylaş Facebook Twitter Google+

Etiketler: , , , , ,
Eklenme Tarihi: 18 Ekim 2019

Konu hakkında yorumunuzu yazın

HOŞ GELDİNİZ

Youtube kanalıma Abone Olabilirsiniz.