domingo, 1 de mayo de 2016

Encender y apagar leds usando Java y Arduino por comunicación serial

Hola a todos, en este post vamos a conectar Arduino con un PC para manejar unos leds. Con las adecuadas interfaces de potencia se pueden lograr aplicaciones interesantes.

Resultado al que debemos llegar:



Programa para Arduino:

int input;
int count;
int encendido;
int apagado;
int pinArray[] = {22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37};

void setup(){
for (count=0;count<16;count++) {
  pinMode(pinArray[count], OUTPUT);  // Declaramos que utilizaremos estos pines como salidas
  }
Serial.begin(9600);
encendido=0;
apagado=0;
}

void loop(){
 
if (Serial.available()>0){

input=Serial.read();

 if (input=='1'){
  digitalWrite(pinArray[encendido], HIGH);
  encendido++;
  if (encendido==17){
  encendido=0;
  }
 }
 
if (input=='0'){  
    digitalWrite(pinArray[apagado], LOW);
    apagado++; 
    if (apagado==17){
     apagado=0;
     }
    }
  }   
}

Programa para Java:

//Clase ArduinoSwitch
package arduinoswitch;

public class ArduinoSwitch {  
    public static void main(String[] args) {
    Window Ventana = new Window();
    Ventana.setVisible(true);
    }
}

// JFrame window
 package arduinoswitch;

import com.panamahitek.PanamaHitek_Arduino;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.Timer;

public class Window extends javax.swing.JFrame {
 
     private int cuenta=0;
     private int apagar=0;
     private int array[];
           
    PanamaHitek_Arduino Arduino = new PanamaHitek_Arduino();

    public Window() {
        initComponents();
        setLocationRelativeTo(null);
        try {
        Arduino.ArduinoTX("COM9", 2000, 9600);
        } catch (Exception ex) {
            Logger.getLogger(Window.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
   
    private void jButtonEncenderActionPerformed(java.awt.event.ActionEvent evt) {                                              
     //   jButtonEncender.setEnabled(false);
        jButtonApagar.setEnabled(true);
        Color c;
        c = new Color(255, 204, 51);
        jButtonApagar.setBackground(c);
        c = new Color(204, 204, 204);
        jButtonEncender.setBackground(c);
     
        try {          
            Arduino.sendData("1");
        } catch (Exception ex) {
            Logger.getLogger(Window.class.getName()).log(Level.SEVERE, null, ex);
        }

       cuenta=cuenta+1; 
     
       if (cuenta>16){
           cuenta=0;
       }
     
       switch (cuenta) {      
     
        case 1:      
        uno.setBackground(Color.green);
        break;

        case 2:
        dos.setBackground(Color.green);    
        break;
      
         case 3:
        tres.setBackground(Color.green);    
        break;
      
         case 4:
        cuatro.setBackground(Color.green);    
        break;
      
         case 5:
        cinco.setBackground(Color.green);    
        break;
      
         case 6:
        seis.setBackground(Color.green);    
        break;
      
         case 7:
        siete.setBackground(Color.green);    
        break;
      
         case 8:
        ocho.setBackground(Color.green);    
        break;
      
         case 9:
        nueve.setBackground(Color.green);    
        break;
      
         case 10:
        diez.setBackground(Color.green);    
        break;
      
         case 11:
        once.setBackground(Color.green);    
        break;
      
         case 12:
        doce.setBackground(Color.green);    
        break;
      
         case 13:
        trece.setBackground(Color.green);    
        break;
      
         case 14:
        catorce.setBackground(Color.green);    
        break;
      
         case 15:
        quince.setBackground(Color.green);    
        break;
      
         case 16:
        dieciseis.setBackground(Color.green);    
        break;
        default:

        break; 
    
      }
      
    }                                             

    private void jButtonApagarActionPerformed(java.awt.event.ActionEvent evt) {                                            
      //  jButtonEncender.setEnabled(true);
     //   jButtonApagar.setEnabled(false);
        Color c;
        c = new Color(255, 204, 51);
        jButtonEncender.setBackground(c);
        c = new Color(204, 204, 204);
        jButtonApagar.setBackground(c);
     
        try {
            Arduino.sendData("0");
                     
        } catch (Exception ex) {
            Logger.getLogger(Window.class.getName()).log(Level.SEVERE, null, ex);
        }
      
        apagar=apagar+1; 
      
        if (apagar>16){
           apagar=0;
       }
        switch (apagar) {      
     
        case 1:      
        uno.setBackground(Color.white);
        break;

        case 2:
        dos.setBackground(Color.white);    
        break;
      
        case 3:
        tres.setBackground(Color.white);    
        break;
      
        case 4:
        cuatro.setBackground(Color.white);    
        break;
      
        case 5:
        cinco.setBackground(Color.white);    
        break;
      
        case 6:
        seis.setBackground(Color.white);    
        break;
      
        case 7:
        siete.setBackground(Color.white);    
        break;
      
        case 8:
        ocho.setBackground(Color.white);    
        break;
      
        case 9:
        nueve.setBackground(Color.white);    
        break;
      
        case 10:
        diez.setBackground(Color.white);    
        break;
      
        case 11:
        once.setBackground(Color.white);    
        break;
      
        case 12:
        doce.setBackground(Color.white);    
        break;
      
        case 13:
        trece.setBackground(Color.white);    
        break;
      
        case 14:
        catorce.setBackground(Color.white);    
        break;
      
        case 15:
        quince.setBackground(Color.white);    
        break;
      
        case 16:
        dieciseis.setBackground(Color.white);    
        break;
        default:

        break; 
    
      }
            
    }                                           

           /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Window().setVisible(true);
            }
        });
    }



No hay comentarios:

Publicar un comentario