본문 바로가기

찐s/Arduino

[Arduino] Lab.2-2: Digital Input & Output

Arduino 와  DE2-115 보드를 활용하여 2 종간 GPIO 를 실습한다.

 

[GPIO]

 

[led.ino]

외부로 부터 입력을 받아 LED를 1ms 마다 점등하는 아두이노 코드는 다음과 같다. 

더보기
/////led-------------------------------------/////
int ledPout = 13; 
int inPin  = 2; 
int pushBt = 0; 
/////-----------------------------------------/////
void setup() {
  pinMode(ledPout, OUTPUT); 
  pinMode(inPin,  INPUT);   
}
/////-----------------------------------------/////
void loop() {
  pushBt = digitalRead(inPin); 
  ledOnOff(pushBt);  
}
/////-----------------------------------------/////
void ledOnOff(int on){
  if (on == 1) {
    for (int i = 0; i < 8; i++) {
      delay(1);
      digitalWrite(ledPout, 1);
      delay(1);
      digitalWrite(ledPout, 0);
    }   
  }  
}

 

[Block Diagram]

FPGA 프로젝트는 지난 DEII-115 Lab.1 실습을 수행한 후 시작한다.

Clock Divider clk_gen.v 과 GPIO 의 입출력 Buffer bf.v 의 Verilog Code 는 다음 과 같다. 

 

[clk_gen.v]

더보기
/////clk_lk----------------------------------/////
/////----------------------------------------/////
    always @(posedge clk, negedge rst_n) begin
        if (rst_n == 0) begin
            cnt_1k	<= 17'd0; 
            clk_1k	<= 1'b1; 
        end
        else begin
            if (en == 1) begin
                if (cnt_1k == 17'd0) begin
                    cnt_1k	<= 17'd24999; 
                    clk_1k	<= ~clk_1k; 
                end
                else begin
                    cnt_1k	<= cnt_1k - 1'b1; 
                end
            end
            else begin
                cnt_1k	<= 17'd0; 
                clk_1k	<= 1'b1; 
            end
        end
    end

 

[bf.v]

더보기
/////bf--------------------------------------/////
/////----------------------------------------/////
	always @(posedge clk, negedge rst_n) begin
		if (rst_n == 0) begin
			ex_out  <=  1'b0; 
			led_out	<=  1'b0; 
		end
		else begin
			ex_out  <=  bt_in; 
			led_out	<=  ex_in; 
		end
	end

 

[Pin Assign]

 

[Test Result]

회로를 구성하고 이를 테스트 하면 LED 가 점등 됨을 알 수 있다. 

   

Arduino, FPGA Board , 2 종간 신호 처리 개념을 실습한다.

2 종간 회로 결선 시 Power OFF 하고 Ground 확인하며 디바이스의 Operating Voltage 를 확인하고 다를 경우 Logic level convertor 를 이용하여 Signal level 을 맞춰준다. 

 

 

 

[참조]

https://www.arduino.cc/

https://www.arduino.cc/reference/en/ 

pinMode(pin, mode) Configures the specified pin to behave either as an input or an output
digitalRead(pin) Reads the value from a specified digital pin, either HIGH or LOW
digitalWrite(pin, value) Write a HIGH or a LOW value to a digital pin

 

'찐s > Arduino' 카테고리의 다른 글

[Arduino] Lab.3-1: Analog input  (0) 2020.10.17
[Arduino] Lab.2-3: Interrupt  (0) 2020.08.22
[Arduino] Lab.2-1: Digital Input  (0) 2020.08.09
[Arduino] Lab.1: Serial Monitor  (0) 2020.08.08