개발 관련/기타

제미나이 2.5 아주 간단한 접근(아두이노 활용)

by 소서리스25 2025. 4. 24.
반응형

제미나이 2.5 아주 간단한 접근(아두이노 활용)

 

예전에 제미나이로 이름을 변경하기 전(구글 바드)에 몇몇 테스트를 진행했었다.

실제로 쓸만한가 해서 몇번의 시도 끝에 정상적으로 뽑을 수 있게 하는 것이 쉽진 않아서 실제로 사용하기에는 좀 어렵겠다 했다. 전문적이지 않아서 그런지 모르겠지만 그냥 참고용으로만 봤었다.

 

그러다 얼마전에 제미나로 변경되어 2.5까지 업데이트된 것을 보고 이번에는 아두이노의 간단한 코드를 짜보라고 프롬프트에 명령어를 다음과 같이 주었다.

 

그랬더니 이제는 이전과 확인히 다른 과정으로 진행을 한다.

 

먼저 AI가 생각하는 과정을 보여주며 사용작의 언어를 분석하여 AI가 인지하고 이해하는 과정을 차례대로 보여준다.

여기에 필요로 하는 부품, 그리고 그 부품의 사용 특성, 원리, 그리고 이를 수행하기 위한 명령어와 사용방법 등의 과정을 차례대로 정리해서 보여준다.

 

 

그리고 최종적인 아두이노 코드를 보여준다.

이뿐만이 아니라 사용된 코드의 설명과 사용방법까지 친절하게 보여준다.

 

이러면 코드를 모르는 사람도, 또는 아주 기초 지식만 있는 사람도 아주 쉽게 접근 할 수 있을 것 같다.

물론 좀더 복잡한 것을 구현하려면 사용자 본인도 그에 맞는 것을 알아야 하겠지만 일일이 코드를 짤 필요가 없을 것 같다.

이제는 관련된 다른 업무에도 활용해 보면 재미있을 것 같다.

 

 

이외에도 개발도구서부터 지원하는 커서AI가 더 사용자친화적인 프롬프트로 바이브코드 방식, 즉 입코딩으로 개발할 수 있다고 하니... 기술의 발전이 놀랍다.

 

 

당장 궁금하다면 구글의 제미나이 2.5를 사용해 보세요!!

 

 

다음은 위의 명령어로 얻은 아두이노 코드이다. 주석 설명까지 아주 친절하게 되어 있다.

/*
 * 아두이노와 초음파 센서(HC-SR04)를 이용한 카운터
 * 물체가 설정된 거리(thresholdDistance) 안으로 들어오면 카운트를 1 증가시킵니다.
 * 카운트 결과는 시리얼 모니터로 출력됩니다.
 */

// 초음파 센서 핀 설정
const int trigPin = 9;  // Trig 핀 연결
const int echoPin = 10; // Echo 핀 연결

// 카운트 관련 변수
int count = 0;               // 카운터 변수, 0으로 초기화
bool objectDetected = false; // 물체 감지 상태 플래그 (중복 카운트 방지용)

// 거리 계산 관련 변수
long duration; // Echo 핀의 HIGH 상태 지속 시간 (마이크로초)
float distance; // 계산된 거리 (cm)

// 카운트를 위한 거리 임계값 설정 (cm 단위)
// 이 거리보다 가까워지면 카운트합니다. 환경에 맞게 조절하세요.
const float thresholdDistance = 15.0; 

void setup() {
  // 시리얼 통신 시작 (속도: 9600 bps)
  Serial.begin(9600); 
  
  // 핀 모드 설정
  pinMode(trigPin, OUTPUT); // Trig 핀은 출력으로 설정
  pinMode(echoPin, INPUT);  // Echo 핀은 입력으로 설정

  Serial.println("초음파 센서 카운터 시작");
  Serial.print("감지 거리 임계값: ");
  Serial.print(thresholdDistance);
  Serial.println(" cm");
}

void loop() {
  // 1. 초음파 발사 준비 (Trig 핀 LOW로 초기화)
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2); // 짧은 지연

  // 2. 초음파 발사 (Trig 핀을 10 마이크로초 동안 HIGH)
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  // 3. 초음파 수신 및 시간 측정
  // Echo 핀이 HIGH가 되는 시간을 측정 (마이크로초 단위)
  // pulseIn 함수는 해당 핀이 지정된 상태(HIGH)가 될 때까지 기다렸다가, 
  // 그 상태가 유지되는 시간을 마이크로초 단위로 반환합니다.
  duration = pulseIn(echoPin, HIGH);

  // 4. 거리 계산
  // 소리의 속도: 약 343 m/s = 0.0343 cm/µs
  // 거리 = (소리 속도 * 시간) / 2  (왕복 거리이므로 2로 나눔)
  distance = duration * 0.0343 / 2.0;

  // 5. 카운트 로직
  // 물체가 임계값 거리 안으로 들어왔고, 이전에 감지되지 않은 상태일 때
  if (distance < thresholdDistance && distance > 0 && !objectDetected) { 
    count++; // 카운트 증가
    objectDetected = true; // 물체 감지 상태로 변경 (중복 카운트 방지)
    Serial.print("물체 감지! 카운트: ");
    Serial.println(count);
  } 
  // 물체가 임계값 거리 밖으로 벗어났고, 이전에 감지된 상태였을 때
  else if (distance >= thresholdDistance && objectDetected) {
    objectDetected = false; // 물체 감지 상태 해제 (다음 감지 준비)
    // Serial.println("물체 사라짐."); // 필요시 주석 해제
  }

  // (디버깅용) 현재 측정된 거리를 시리얼 모니터에 출력
  /* Serial.print("측정 거리: ");
  Serial.print(distance);
  Serial.println(" cm");
  */

  // 다음 측정을 위해 잠시 대기 (센서 안정 및 시리얼 출력 조절)
  // 너무 짧으면 불안정할 수 있고, 너무 길면 빠른 물체를 놓칠 수 있습니다.
  delay(100); // 0.1초 대기 (100ms) 
}

 

반응형

'개발 관련 > 기타' 카테고리의 다른 글

Unity 우산  (0) 2023.08.26
(과거게시물) 구글 계정확인 필요 해결법  (0) 2023.03.30

댓글