Alexander Höfflich
Published © GPL3+

Expandiendo las entradas y salidas digitales con Arduino

Estoy trabajando en un proyecto donde controlo 8 entradas digitales y 8 salidas digitales con 2 Shift registers 595 y un Arduino UNO

IntermediateProtip1,020
Expandiendo las entradas y salidas digitales con Arduino

Things used in this project

Story

Read more

Code

Shift Register

Arduino
Este es el código que utilicé, cualquier duda haganmelo saber
#include <SPI.h>
byte Input, Output, Check=1;
int j;
int pin = 2;

void setup(){
  pinMode(13, OUTPUT);//clock
  pinMode(11, OUTPUT);//data
  pinMode(4, OUTPUT);//latch
  pinMode(pin, INPUT);//Input from buttons
  
  SPI.setBitOrder(MSBFIRST);
  SPI.setDataMode(SPI_MODE0);
  SPI.setClockDivider(SPI_CLOCK_DIV2);
  SPI.begin();

  SPI.transfer(255);  
  SPI.transfer(0);
  digitalWrite(4, HIGH);   //Aqui cambias de memoria a salida
  digitalWrite(4, LOW);
  Serial.begin(9600);
  attachInterrupt(digitalPinToInterrupt(pin), pin_read, RISING); //inicia interrupcion

}//setp

void loop(){

}//loop


void pin_read(){

  for(j=0; j<50; j++)
    delayMicroseconds(1000);

    Check=1;
    for(j=0; j<8; j++){
      SPI.transfer(Check);
      SPI.transfer(Output);
      digitalWrite(4, HIGH); //Aqui cambias de memoria a salida
      digitalWrite(4, LOW);
      delayMicroseconds(500);
      if(digitalRead(pin) ==HIGH)
        bitWrite(Output, j, 1);
      else
        bitWrite(Output, j, 0);
      delayMicroseconds(500);
      Check = Check<<1;
    }

    SPI.transfer(255);
    SPI.transfer(Output);
    Serial.println(Output);
    digitalWrite(4, HIGH); //Aqui cambias de memoria a salida
    digitalWrite(4, LOW);

}//pin_read

Credits

Alexander Höfflich

Alexander Höfflich

6 projects • 24 followers
Arduino & Processing lover. I live to make and share. I trully believe that the maker community can make the world a better place
Thanks to Kevin Darrah.

Comments