Bu konumuzda arduino üzerinden usb ile 8 röleyi aç kapa yapabilen bir shild tasarlayıp çalıştıracağız.

ISIS Devre şeması:


ARES Baskı devresi



ARES animasyon:



Processing kodu:
scription">Kod:
import controlP5.*;
import processing.serial.*;
ControlP5 cp5;
Serial seriPort;
void setup() {
  size(400, 100);
  cp5 = new ControlP5(this); // Kontrol nesnesini oluştur
  seriPort = new Serial(this, "COM9", 9600); //seri port nesnesini oluştur
  // Toggle Nesnelerini oluşturuyoruz 
  cp5.addToggle("relay1") // Röle1 ismini veriyoruz
    .setPosition(10, 40) // nesnenin konumu
      .setSize(30, 15) // nesnenin boyutu (en,boy)
        .setValue(false) // başlangıç durumu (false)
          .setMode(ControlP5.SWITCH) // anahtar görünümü
            ;

  cp5.addToggle("relay2")
    .setPosition(60, 40)
      .setSize(30, 15)
        .setValue(false)
          .setMode(ControlP5.SWITCH)
            ;

  cp5.addToggle("relay3")
    .setPosition(110, 40)
      .setSize(30, 15)
        .setValue(false)
          .setMode(ControlP5.SWITCH)
            ;

  cp5.addToggle("relay4")
    .setPosition(160, 40)
      .setSize(30, 15)
        .setValue(false)
          .setMode(ControlP5.SWITCH)
            ;

  cp5.addToggle("relay5")
    .setPosition(210, 40)
      .setSize(30, 15)
        .setValue(false)
          .setMode(ControlP5.SWITCH)
            ;
  cp5.addToggle("relay6")
    .setPosition(260, 40)
      .setSize(30, 15)
        .setValue(false)
          .setMode(ControlP5.SWITCH)
            ;        
  cp5.addToggle("relay7")
    .setPosition(310, 40)
      .setSize(30, 15)
        .setValue(false)
          .setMode(ControlP5.SWITCH)
            ;  
  cp5.addToggle("relay8")
    .setPosition(360, 40)
      .setSize(30, 15)
        .setValue(false)
          .setMode(ControlP5.SWITCH)
            ;   
  background(0); //arkaplan siyah
}

void draw() {
}
void relay1(boolean bayrak) {
  if (bayrak==true) {
    seriPort.write('A');
    println("Röle 1 çekti");
  } 
  else {
    seriPort.write('B');
    println("Röle 1 bıraktı");
  }
}

void relay2(boolean bayrak) {
  if (bayrak==true) {
    seriPort.write('C');
    println("Röle 2 çekti");
  } 
  else {
    seriPort.write('D');
    println("Röle 2 bıraktı");
  }
}

void relay3(boolean bayrak) {
  if (bayrak==true) {
    seriPort.write('E');
    println("Röle 3 çekti");
  } 
  else {
    seriPort.write('F');
    println("Röle 3 bıraktı");
  }
}

void relay4(boolean bayrak) {
  if (bayrak==true) {
    seriPort.write('G');
    println("Röle 4 çekti");
  } 
  else {
    seriPort.write('H');
    println("Röle 4 bıraktı");
  }
}
void relay5(boolean bayrak) {
  if (bayrak==true) {
    seriPort.write('I');
    println("Röle 5 çekti");
  } 
  else {
    seriPort.write('K');
    println("Röle 5 bıraktı");
  }
}
void relay6(boolean bayrak) {
  if (bayrak==true) {
    seriPort.write('L');
    println("Röle 6 çekti");
  } 
  else {
    seriPort.write('M');
    println("Röle 6 bıraktı");
  }
}
void relay7(boolean bayrak) {
  if (bayrak==true) {
    seriPort.write('N');
    println("Röle 7 çekti");
  } 
  else {
    seriPort.write('O');
    println("Röle 7 bıraktı");
  }
}
void relay8(boolean bayrak) {
  if (bayrak==true) {
    seriPort.write('P');
    println("Röle 8 çekti");
  } 
  else {
    seriPort.write('R');
    println("Röle 8 bıraktı");
  }
}
Arduino kodu:
description">Kod:
int relay[] = {
 6,7,8,9,10,11,12,13};
char gelenVeri;
void setup()
{
  pinMode(relay[0],OUTPUT);
  pinMode(relay[1],OUTPUT);
  pinMode(relay[2],OUTPUT);
  pinMode(relay[3],OUTPUT);
  pinMode(relay[4],OUTPUT);
  pinMode(relay[5],OUTPUT);
  pinMode(relay[6],OUTPUT);
  pinMode(relay[7],OUTPUT);

  Serial.begin(9600);
}

void loop()
{
  while(Serial.available()>0)
  {
    gelenVeri = Serial.read();
    switch(gelenVeri)
    {
    case 'A':
      digitalWrite(relay[0],HIGH);
      break;
    case 'B':
      digitalWrite(relay[0],LOW);
      break;
    case 'C':
      digitalWrite(relay[1],HIGH);
      break;
    case 'D':
      digitalWrite(relay[1],LOW);
      break;
    case 'E':
      digitalWrite(relay[2],HIGH);
      break;
    case 'F':
      digitalWrite(relay[2],LOW);
      break;
    case 'G':
      digitalWrite(relay[3],HIGH);
      break;
    case 'H':
      digitalWrite(relay[3],LOW);

    case 'I':
      digitalWrite(relay[4],HIGH);
      break;
    case 'K':
      digitalWrite(relay[4],LOW);

    case 'L':
      digitalWrite(relay[5],HIGH);
      break;
    case 'M':
      digitalWrite(relay[5],LOW);
    case 'N':
      digitalWrite(relay[6],HIGH);
      break;
    case 'O':
      digitalWrite(relay[6],LOW);
    case 'P':
      digitalWrite(relay[7],HIGH);
      break;
    case 'R':
      digitalWrite(relay[7],LOW);     

    }
  }
}
Orjinal konu: https://temrinlerim.org/index.php?topic=181.0

Dosyaları indirin: Eklenti 209