LCD

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
//연결된 아두이노 핀 번호로 lcd모듈을 초기화한다.

void setup() {
  lcd.begin(16, 2); //16열 2행의 lcd모듈 설정
  lcd.print("Hello!");
}

void loop() {
  lcd.setCursor(0, 1); //0열 1행에 커서를 설정
  lcd.print("Good Luck!!");
  lcd.print(millis() / 1000);
  delay(10);
}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
//초음파 센서로 거리 측정해서 물체가 50cm 이내로 가까이 왔을 때 
//액정 2행에 경고 메시지를 출력;

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
//연결된 아두이노 핀 번호로 lcd모듈을 초기화한다.

void setup() {
  lcd.begin(16, 2); //16열 2행의 lcd모듈 설정
  
}

void loop() {
  pinMode(9,OUTPUT);
  digitalWrite(9,LOW);
  delayMicroseconds(2);
  digitalWrite(9,HIGH);
  delayMicroseconds(5);
  digitalWrite(9,LOW);
  
  pinMode(9,INPUT);
  double duration = pulseIn(9,HIGH);
  double cm = duration * 340 / 10000 / 2;
  lcd.setCursor(0, 1); //0열 1행에 커서를 설정
  if(cm<=50)
  {
  	lcd.print("Warning");
  }else{
    lcd.clear();
  }
  delay(10);
}
 

PIEZO

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
//연결된 아두이노 핀 번호로 lcd모듈을 초기화한다.

const int PIEZO=8;

const int melody[]={ //도레미파솔라시도
  262,
  294,
  330,
  349,
  392,
  440,
  494,
  523
};

void alarmMelody(){
  for(int i=0;i<8;i++){
  	tone(PIEZO,melody[i],500);
    //8번 단자에 음의 길이 0.5초
    delay(500);
  }
}
void setup() {
  lcd.begin(16, 2); //16열 2행의 lcd모듈 설정
  
}

void loop() {
  pinMode(9,OUTPUT);
  digitalWrite(9,LOW);
  delayMicroseconds(2);
  digitalWrite(9,HIGH);
  delayMicroseconds(5);
  digitalWrite(9,LOW);
  
  pinMode(9,INPUT);
  double duration = pulseIn(9,HIGH);
  double cm = duration * 340 / 10000 / 2;
   //0열 1행에 커서를 설정
  if(cm<=50)
  {
    alarmMelody();
    lcd.setCursor(0, 0);
  	lcd.print("Warning");
    lcd.setCursor(0, 1);
    lcd.print("Warning");
  }else{
    lcd.clear();
  }
  delay(10);
}
 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
JDBC
(Java Database Connectivity)
Java와 Databasd 연동하는 애플리케이션을 구현할 수 있도록 하는 API
좁은 의미로는 java.sql 패키지를 의미한다.
- java.sql 패키지에는 80%가 interface 임
- 해당 인터페이스를 각 DBMS 사의 개발자들이 상속받아 구현을 하는데 이를 드라이버라고 함
- jdbc를 하려면 일단 각 DBMS사에 가서 JDBC Driver를 다운로드 받아 설치해야 한다.
1) Oracle 사이트에서 jdbc driver 다운로드 하든지
2) 우리는 oracle을 설치했으므로 
C:\Program Files\Java\jdk1.8.0_202\jre\lib\ext아래 복사하여 붙여넣기
3) classpath에 위의 경로를 추가한다.
제어판 -> 시스템 -> 고급 ->환경변수 ->classpath 찾아 편집
C:\Program Files\Java\jdk1.8.0_202\jre\lib\ext\ojdbc6.jar

//jdbc : 프로토콜
//oracle : dbms유형
//thin : 드라이버 타입, 순수하게 자바로 구현되 드라이버
//@localhost : DB서버의 ip주소
//1521 : 오라클 리스너가 열어놓은 포트번호 (DBMS사마다 포트번호는 다름)
//XE : 전역데이터베이스 이름(SID)

package jdbc.day01;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

class JDBCTest
{
	public static void main(String args[])
	{
		
		try {
			//1. 오라클 드라이버 로딩
			Class.forName("oracle.jdbc.driver.OracleDriver");
			System.out.println("Driver Loading Success!!");
			
			//2. DB와 연결
			String url = "jdbc:oracle:thin:@localhost:1521:XE";
			String user = "scott", pwd="tiger";
			Connection con = DriverManager.getConnection(url,user,pwd);
			System.out.println("DB 연결 성공");
			
			//3. sql문 작성
			//한줄 메모장 테이블을 생성하는 문장을 작성
			String sql = "CREATE TABLE memo(";
			sql+="idx number(4) primary key,"; //글번호
			sql+="name varchar2(30) not null,"; //작성자
			sql+="msg varchar2(100),";
			sql+="wdate date default sysdate)";
			
			//4. sql문을 실행하기위한 Statement객체 얻어오기
			//==> Connection의 createStatement()메소드를 이용
			Statement stmt = con.createStatement();
			
			//5. sql문을 실행
			//Statement의 execute()메소드를 이용
			boolean b=stmt.execute(sql);
			System.out.println("b= "+b);
			System.out.println("Memo테이블 생성 성공!!");
			//6. DB와 연결된 자원을 반납
			if(stmt!= null) stmt.close();
			if(con!=null) con.close();
		} catch (ClassNotFoundException e) {
			System.out.println("드라이버 로딩 실패!");
			e.printStackTrace();
		} catch (SQLException e) {
			System.out.println("SQL오류 : Memo테이블이 생성되어 있는지 확인");
			e.printStackTrace();
		}
	}
}

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
PL/SQL
--사번을 인 파라미터로 받아들여 해당 사원의 이름과 부서번호 부서명을 출력하는
--프로시저를 작성

CREATE OR REPLACE PROCEDURE EMP_SEARCH(PNO IN EMP.EMPNO%TYPE)
IS
  VNAME EMP.ENAME%TYPE;
  VDNO EMP.DEPTNO%TYPE;
  VDNAME VARCHAR2(30);
BEGIN
  SELECT ENAME,DEPTNO INTO VNAME,VDNO FROM EMP
  WHERE EMPNO=PNO;
  --VDNO가 10번과 같으면  VDNAME에 '회계부서'값을 할당
  --20번이면'연구부서', 30분 ' 영업부서', 40번'운영부서', 그외 '교육부서'
  --사번,사원명, 부서번호, 부서명 출력
  IF VDNO=10 THEN VDNAME:='회계부서';
  ELSIF VDNO=20 THEN VDNAME:='연구부서';
  ELSIF VDNO=30 THEN VDNAME:='영업부서';
  ELSIF VDNO=40 THEN VDNAME:='운영부서';
  ELSE VDNAME:='교육부서';
  END IF;
  DBMS_OUTPUT.PUT_LINE(PNO||LPAD(VNAME,15,' ')||LPAD(VDNAME,15,' ')||LPAD(VDNO,15,' '));
  EXCEPTION
    WHEN NO_DATA_FOUND THEN
      DBMS_OUTPUT.PUT_LINE(PNO||'사원은 존재하지 않음');
END;
/

EXECUTE EMP_SEARCH(7788);
SET SERVEROUTPUT ON;

반복문

DECLARE
BEGIN
  FOR I IN 1 ..10 LOOP
    DBMS_OUTPUT.PUT_LINE(I);
  END LOOP;
END;
/

DECLARE
BEGIN
  FOR I REVERSE 1 ..10 LOOP
    DBMS_OUTPUT.PUT_LINE(I);
  END LOOP;
END;
/

--EMP2테이블에 EMPNO, ENAME, HIREDATE를 삽입하는 프로시저 작성하기

DECLARE
BEGIN
  FOR I IN 100..105 LOOP
    INSERT INTO EMP2(EMPNO,ENAME,HIREDATE) VALUES(I,'TOM'||I,sysdate);
  END LOOP;
END;
/
select * from emp2;

FOR 반복문

CREATE OR REPLACE PROCEDURE DEPT_ALL
IS
  VDNO DEPT.DEPTNO%TYPE;
  VDNAME DEPT.DNAME%TYPE;
  VLOC DEPT.LOC%TYPE;
BEGIN
  /*SELECT DEPTNO, DNAME, LOC INTO VDNO, VDNAME, VLOC 
  FROM DEPT ORDER BY DEPTNO ASC;
  DBMS_OUTPUT.PUT_LINE(VDNO||' '||VDNAME||' '||VLOC);*/
  FOR K IN (SELECT * FROM DEPT ORDER BY DEPTNO ASC) LOOP
    DBMS_OUTPUT.PUT_LINE(K.DEPTNO||' '||K.DNAME||' '||K.LOC);
  END LOOP;
  EXCEPTION
  WHEN TOO_MANY_ROWS THEN
  DBMS_OUTPUT.PUT_LINE('검색 된 데이터가 2건 이상입니다. 커서를 이용하세요');
END;
/

EXECUTE DEPT_ALL;

WHILE LOOP문

DECLARE
  CNT NUMBER(3):=10;
BEGIN
  WHILE CNT<60 LOOP
    INSERT INTO EMP2(EMPNO,ENAME,HIREDATE)
    VALUES (CNT,'TEST'||CNT,SYSDATE);
    CNT := CNT+5;
  END LOOP;
  FOR K IN (SELECT EMPNO,ENAME,HIREDATE FROM EMP2 ORDER BY 3 DESC) LOOP
    DBMS_OUTPUT.PUT_LINE(K.EMPNO||LPAD(K.ENAME,15,' ')||LPAD(K.ENAME,15,' '));
  END LOOP;
END;
/


EXIT 조건

DECLARE 
  VCNT NUMBER(3) :=50;
BEGIN
  LOOP
    INSERT INTO DEPT2(DEPTNO,DNAME,LOC)
    VALUES(VCNT,'SALES'||VCNT,'LA');
    VCNT := VCNT+10;
    EXIT WHEN VCNT >80;
  END LOOP;
END;
/
DESC DEPT2;

select * from dept2;

 

+ Recent posts