Code Temperature Arduino 1

From ccitonlinewiki
Revision as of 09:48, 22 April 2020 by Tanwir.ahmad (talk | contribs)
Jump to: navigation, search

//CODE TEMPERATURE ARDUINO 1# /*UNTUK MENGUKUR TEMPERATUR:


  • /
  1. include "max6675.h"
  2. include "Stepper.h"
  3. define STEPS 32 // Number of steps for one revolution of Internal shaft
                   // 2048 steps for one revolution of External shaft
  1. include <AccelStepper.h> //library motor stepper
  2. define HALFSTEP 8 // definisi jumlah step

//#include <Servo.h> //Servo servo1; //Servo servo2;

volatile boolean TurnDetected; // need volatile for Interrupts volatile boolean rotationdirection; // CW or CCW rotation

const int PinCLK=2; // Generating interrupts using CLK signal const int PinDT=3; // Reading DT signal const int PinSW=4; // Reading Push Button switch

int RotaryPosition=0; // To store Stepper Motor Position

int PrevPosition; // Previous Rotary position Value to check accuracy int StepsToTake; // How much to move Stepper

// Setup of proper sequencing for Motor Driver Pins // In1, In2, In3, In4 in the sequence 1-3-2-4 Stepper small_stepper(STEPS, 8, 10, 9, 11);

// Interrupt routine runs if CLK goes from HIGH to LOW void isr () {

 delay(5);  // delay for Debouncing
 if (digitalRead(PinCLK))
   rotationdirection= digitalRead(PinDT);
 else
   rotationdirection= !digitalRead(PinDT);
 TurnDetected = true;

}

//T RB int ktcSO1 = 4; //34; int ktcCS1 = 5 ; //35; int ktcCLK1 = 6; //36; MAX6675 ktc1(ktcCLK1, ktcCS1, ktcSO1);

//T Reg int ktcSO2 = 31; int ktcCS2 = 32; int ktcCLK2 = 33; MAX6675 ktc2(ktcCLK2, ktcCS2, ktcSO2);

//T riser1 int ktcSO3 = 22; int ktcCS3 = 23; int ktcCLK3 = 24; MAX6675 ktc3(ktcCLK3, ktcCS3, ktcSO3);

//T riser2 int ktcSO4 = 46 ; //2; int ktcCS4 = 47  ; //3; int ktcCLK4 = 48  ; //4; MAX6675 ktc4(ktcCLK4, ktcCS4, ktcSO4);

// T riser3 int ktcSO5 = 28; int ktcCS5 = 29; int ktcCLK5 = 30; MAX6675 ktc5(ktcCLK5, ktcCS5, ktcSO5);

///T Cyclone1 int ktcSO6 = 37; int ktcCS6 = 38; int ktcCLK6 = 39; MAX6675 ktc6(ktcCLK6, ktcCS6, ktcSO6);

//T Cyclone2 int ktcSO7 = 40; int ktcCS7 = 41; int ktcCLK7 = 42; MAX6675 ktc7(ktcCLK7, ktcCS7, ktcSO7);

//T Cyclone3 int ktcSO8 = 43; int ktcCS8 = 44; int ktcCLK8 = 45; MAX6675 ktc8(ktcCLK8, ktcCS8, ktcSO8);

/*//T out cyclone int ktcSO9 = 46; int ktcCS9 = 47; int ktcCLK9 = 48; MAX6675 ktc9(ktcCLK9, ktcCS9, ktcSO9);

//T in Fraksinator int ktcSO10 = 49; int ktcCS10 = 50; int ktcCLK10 = 51; MAX6675 ktc10(ktcCLK10, ktcCS10, ktcSO10);

//T Fraksinator1 int ktcSO11 = 2; int ktcCS11 = 3; int ktcCLK11 = 4; MAX6675 ktc11(ktcCLK11, ktcCS11, ktcSO11);

//T Fraksinator2 int ktcSO12 = 5; int ktcCS12 = 6; int ktcCLK12 = 7; MAX6675 ktc12(ktcCLK12, ktcCS12, ktcSO12);

//T Fraksinator3 int ktcSO13 = 8; int ktcCS13 = 9; int ktcCLK13 = 10; MAX6675 ktc13(ktcCLK13, ktcCS13, ktcSO13);

//T Fraksinator4 int ktcSO14 = 11; int ktcCS14 = 12; int ktcCLK14 = 13; MAX6675 ktc14(ktcCLK14, ktcCS14, ktcSO14);

//T GB1 int ktcSO15 = 13; int ktcCS15= 15; int ktcCLK15 = 16; MAX6675 ktc15(ktcCLK15, ktcCS15, ktcSO15);

//T GB2 int ktcSO16 = 17; int ktcCS16 = 18; int ktcCLK16 = 19; MAX6675 ktc16(ktcCLK16, ktcCS16, ktcSO16);

//T GB3 int ktcSO17 = A0; int ktcCS17 = A1; int ktcCLK17 = A2; MAX6675 ktc17(ktcCLK17, ktcCS17, ktcSO17);

/*float TURBINE; //pengukuran SINYAL data yang bersifat incremental const int HSensor = 2; //nama alias pada pin 2 int Calc;

  • /

const int AnalogInput = A0; // Analog input where the resistor is placed int sensorValue = 0; float voltage, convert, pressure_pascal, pressure_bar, pressure_psi = 0.0; float t1, f1 = 0.0; unsigned long previousMillis, previousMillis1 = 0; float waktu_cuplik = 0.0; const long interval = 1500; const long interval1 = 300; /*

  1. define motorPin1 10 // IN1 on the ULN2003 driver 1
  2. define motorPin2 11 // IN2 on the ULN2003 driver 1
  3. define motorPin3 12 // IN3 on the ULN2003 driver 1
  4. define motorPin4 13 // IN4 on the ULN2003 driver 1

// Initialize with pin sequence IN1-IN3-IN2-IN4 for using the AccelStepper with 28BYJ-48 AccelStepper stepper1(HALFSTEP, motorPin1, motorPin3, motorPin2, motorPin4);

 */

/*void speedrpm () //fungsi penghitungan dan interrupt { TURBINE++; //bersifat incrementing (dengan mode falling edge) }*/


void setup() {

 // put your setup code here, to run once:
 Serial.begin(9600);
 pinMode(PinCLK,INPUT);
 pinMode(PinDT,INPUT);  
 pinMode(PinSW,INPUT);
 digitalWrite(PinSW, HIGH); // Pull-Up resistor for switch
 attachInterrupt (0,isr,FALLING); // interrupt 0 always connected to pin 2 on Arduino UNO

/* pinMode(HSensor, INPUT); //inisialisasi sebagai input

 Serial.begin(9600);
 attachInterrupt(00, speedrpm, RISING); //cara penulisan perintah interrupt
 */
 /*
 stepper1.setMaxSpeed(1000.0);
 stepper1.setAcceleration(200.0);
 stepper1.setSpeed(1000);
 //stepper1.moveTo(-15000);
 */
 /*servo1.attach(10); // Attaches servo to specified pin
 servo2.attach(6);
 servo1.write(0);
 servo2.write(0);
 */
 Serial.println("CLEARDATA");
 Serial.println("LABEL, WAKTU, Cuplik(s), T.RB, T.Reg, T.Riser1, T.Riser2, T.Riser3, T.Cyc1, T.Cyc2 , T.Cyc3");
 // Serial.println("LABEL, WAKTU, Cuplik(s), T.RB, T.Reg, T.Riser1, T.Riser2, T.Riser3, T.Cyc1, T.Cyc2 , T.Cyc3, T.outCyc, T.inFR, T.FR1, T.FR2 , T.FR3, T.FR4, T.GB1, T.GB2 ,T.GB3 ,Pressure(bar), flowrate (lpm)");

}


void baca_tekanan() {

 sensorValue = analogRead(AnalogInput);
 voltage = (sensorValue*5.0)/1024.0;
 convert = (3.0*(voltage-0.475));
 pressure_pascal = (3.0*(voltage-0.475))*1000000.0;
 pressure_bar = pressure_pascal/10e5;
 pressure_psi = pressure_bar*14.5038;

}

/*void baca_flowrate() {

 TURBINE = 00; //data awal = 0
 sei(); //perintah aktifnya mode interrupt
 delay (1000); //nilai delay 1 detik
 cli(); //perintah untuk matinya program interrupt
 float Calc = (TURBINE  / 9); //Pulsa * 60 / 7.5 

}*/

void loop() {

// Serial.print("suhu = "); // Serial.print(ktc.readCelsius()); // Printing temperature value over serial port // Serial.print("\t"); // baca_tekanan(); // Serial.print(convert); // Serial.print("\t"); // Serial.println(pressure_pascal); // //Serial.print("\t"); // //Serial.println(presure); // delay(500);


 unsigned long currentMillis = millis();
 unsigned long currentMillis1 = millis();
 waktu_cuplik = (float) currentMillis/1000;  
 //sensorValue = analogRead(A12);
 baca_tekanan();
//baca_flowrate();
 //speedrpm();
if (currentMillis - previousMillis == interval){

// Serial.print(ktc.readCelsius()); // Serial.print("\t"); // Serial.println(sensorValue);

   previousMillis = currentMillis;
   /*Serial.print(ktc1.readCelsius());
   Serial.print(",");
   Serial.println(ktc2.readCelsius());*/
   Serial.println((String) "DATA,TIME," + waktu_cuplik + "," + ktc1.readCelsius() + "," + ktc2.readCelsius() + "," + ktc3.readCelsius() + "," + ktc4.readCelsius() + "," + ktc5.readCelsius() + "," + ktc6.readCelsius() + "," + ktc7.readCelsius() + "," + ktc8.readCelsius());
   //Serial.println((String) "DATA,TIME," + waktu_cuplik + "," + ktc1.readCelsius() + "," + ktc2.readCelsius() + "," + ktc3.readCelsius() + "," + ktc4.readCelsius() + "," + ktc5.readCelsius() + "," + ktc6.readCelsius() + "," + ktc7.readCelsius() + "," + ktc8.readCelsius() + "," + ktc9.readCelsius() + "," + ktc10.readCelsius()+ "," + ktc11.readCelsius()+ "," + ktc12.readCelsius()+ "," + ktc13.readCelsius()+ "," + ktc14.readCelsius()+  "," + ktc15.readCelsius()+ "," + ktc16.readCelsius()+ "," + ktc17.readCelsius()+ "," + pressure_bar ); 

// Serial.println((String) "DATA,TIME," + waktu_cuplik + "," + ktc1.readCelsius() + "," + ktc2.readCelsius() + "," + ktc3.readCelsius() + ","+ ktc4.readCelsius() + "," + ktc5.readCelsius() + ","+ktc6.readCelsius() + "," + ktc7.readCelsius() + "," + ktc8.readCelsius()+ "," + ktc9.readCelsius() + "," + ktc10.readCelsius() + "," + pressure_bar);

    small_stepper.setSpeed(800); //Max seems to be 700
    if (!(digitalRead(PinSW))) {   // check if button is pressed
      if (RotaryPosition == 0) {  // check if button was already pressed
   }   else {
       small_stepper.step((RotaryPosition*100));
       RotaryPosition=0; // Reset position to ZERO
     }
   }
 // Runs if rotation was detected
   if (TurnDetected)  {
     PrevPosition = RotaryPosition; // Save previous position in variable
     if (rotationdirection) {
       RotaryPosition=RotaryPosition-1;} // decrase Position by 1
     else {
     RotaryPosition=RotaryPosition+1;} // increase Position by 1
     TurnDetected = false;  // do NOT repeat IF loop until new rotation detected
   // Which direction to move Stepper motor
     if ((PrevPosition + 1) == RotaryPosition) { // Move motor CW
       StepsToTake=-100; 
       small_stepper.step(StepsToTake);
   }
     if ((RotaryPosition + 1) == PrevPosition) { // Move motor CCW
       StepsToTake=100;
       small_stepper.step(StepsToTake);
   }
 }
    
    
    
    
    
    
    
    
    
    
    
    
    
    /* if(ktc1.readCelsius()  < 27)
 {  
     //servo1.write(80);
     //servo2.write(80);

// stepper1.moveTo(-15000);

 }
     else if(ktc1.readCelsius()<=30)
 {
     //servo1.write(45);
     //servo2.write(45);
 }    
     else if (ktc1.readCelsius()>30)
 {
     //servo1.write(0);
     //servo2.write(0);
 }    
      delay(1000);
      */
}
  }