<< 이 글은 매우 주관적인 관점에서 작성된 것입니다. >>

초등학교부터 Coding 교육을 했었습니다.
대부분이 Google의 ‘Blockly’을 이용한 Block 기반 프로그램 도구를 많이 사용합니다.
10년 전부터 특수고(영재, 과학)와 같은 학교에서는 ‘C++’로 프로그램을 작성하기도 하고, 대학은 대부분이 ‘Python’으로 교육하기도 합니다.
(1990년대에는 ‘GW-Basic’으로 공부하였습니다.)

이제는 ‘AI’ 시대가 되며서 코딩 교육을 재 검토해야 하는 시기가 된 것 같습니다.
이 글은 ‘STEAM’ 교육 중 Arduino Kit를 사용하는 Coding 교육에 대하여 예시를 제시하여, 같이 고민하자 합니다.

구글의 Gemini를 이용하여 프로그램을 작성해 보았습니다.

질문 ==============================

arduino에서 A0 핀에서 값을 읽어 Value_A에 저장하고, 이 값을 total_Value에 더하는 과정을 10번 반복하여, 합과 평균을 출력하는 프로그램을 작성해 줘

답안 표시

아두이노 A0 핀 값 읽어서 10번 더하고 합과 평균 출력하기

문제 분석:

  • A0 핀에서 10번 값 읽기
  • 읽은 값을 Value_A에 저장
  • Value_A를 total_Value에 누적
  • 최종적으로 total_Value와 평균 계산하여 출력

코드:

C++

void setup() {
  Serial.begin(9600); // 시리얼 통신 초기화
}

void loop() {
  int total_Value = 0; // 총합을 저장할 변수
  int Value_A; // 임시 저장 변수

  for (int i = 0; i < 10; i++) { // 10번 반복
    Value_A = analogRead(A0); // A0 핀 값 읽기
    total_Value += Value_A; // 총합에 더하기
  }

  float average = (float)total_Value / 10; // 평균 계산 (float형으로 변환)

  Serial.print("총합: ");
  Serial.print(total_Value);
  Serial.println();
  Serial.print("평균: ");
  Serial.print(average);
  Serial.println();

  delay(1000); // 1초 대기
}

코드를 사용할 때는 주의가 필요합니다.

코드 설명:

  1. 변수 선언:
    • total_Value: 총합을 저장할 변수
    • Value_A: 임시로 A0 핀에서 읽은 값을 저장할 변수
  2. 반복문:
    • for 문을 이용하여 10번 반복
    • analogRead(A0): A0 핀에서 값을 읽어 Value_A에 저장
    • total_Value += Value_A;: total_ValueValue_A를 더하여 누적
  3. 평균 계산:
    • total_Value를 10으로 나누어 평균 계산 (float형으로 변환하여 소수점까지 표현)
  4. 출력:
    • Serial.print()를 이용하여 총합과 평균을 시리얼 모니터에 출력

핵심 기능:

  • 반복: for 문을 이용하여 10번 반복하며 값을 읽고 누적
  • 데이터 형 변환: 정수형으로 읽은 값을 평균 계산을 위해 float형으로 변환
  • 출력: 시리얼 모니터를 통해 결과 확인

주의 사항:

  • A0 핀: 아날로그 입력 핀이므로 디지털 핀이 아닌 A0 핀을 사용해야 합니다.
  • 데이터 형: 평균을 소수점까지 표현하기 위해 float형으로 변환합니다.
  • 시리얼 통신: 시리얼 모니터를 통해 결과를 확인하기 위해 Serial.begin() 함수를 사용합니다.

활용 예시:

  • 센서 데이터 평균: 여러 번 측정한 센서 값의 평균을 구하여 정확도를 높일 수 있습니다.
  • 노이즈 제거: 여러 번 측정한 값의 평균을 통해 노이즈의 영향을 줄일 수 있습니다.

추가 기능:

  • 표준 편차: 측정값들의 분산 정도를 나타내는 표준 편차를 계산하여 추가할 수 있습니다.
  • 최댓값, 최솟값: 측정값 중 최댓값과 최솟값을 찾아 출력할 수 있습니다.
  • 그래프 출력: 시리얼 플로터와 같은 프로그램을 이용하여 측정값을 그래프로 나타낼 수 있습니다.

글 재주 없는 사람에게도 정확한 답을 줍니다.
어떻게 코딩 교육 하시겠습니까?

다른 것도 해 보았습니다.

질문 ==============================

arduino에서 A0로 전압을 읽어, 0~5V로 환산하여 출력 하는 프로그램을 작성해 줘

답안 표시
아두이노 A0 핀에서 읽은 값을 0~5V로 변환하여 출력하는 프로그램

코드 설명
아두이노의 A0 핀은 아날로그 입력 핀으로, 0~5V의 전압을 읽어 0~1023의 값으로 변환합니다. 이 값을 다시 0~5V로 환산하여 시리얼 모니터에 출력하는 프로그램입니다.
C++

void setup() {
Serial.begin(9600); // 시리얼 통신 속도 설정
}

void loop() {
int sensorValue = analogRead(A0); // A0 핀에서 값 읽기
float voltage = sensorValue * (5.0 / 1023.0); // 0~1023 값을 0~5V로 변환
Serial.print("센서 값: ");
Serial.print(sensorValue);
Serial.print(" 전압: ");
Serial.print(voltage);
Serial.println(" V");
delay(100); // 0.1초 대기
}


코드를 사용할 때는 주의가 필요합니다.

코드 분석

  • Serial.begin(9600);: 시리얼 통신을 초당 9600비트로 설정합니다. 시리얼 모니터를 통해 결과를 확인하기 위해 필요합니다.
  • analogRead(A0);: A0 핀에서 아날로그 값을 읽어 sensorValue 변수에 저장합니다.
  • float voltage = sensorValue * (5.0 / 1023.0);: 읽은 값을 0~5V로 변환합니다. 1023이라는 값은 아두이노가 아날로그 값을 표현할 수 있는 최대 값입니다.
  • Serial.print(), Serial.println(): 시리얼 모니터에 센서 값과 변환된 전압 값을 출력합니다.

실행 방법

  1. 코드 복사: 위 코드를 아두이노 IDE에 복사합니다.
  2. 보드 연결: 아두이노 보드를 컴퓨터에 연결합니다.
  3. 업로드: 스케치를 아두이노 보드에 업로드합니다.
  4. 시리얼 모니터 실행: 아두이노 IDE에서 시리얼 모니터를 열어 결과를 확인합니다.

추가 설명

  • 0~1023 값: 아두이노는 아날로그 값을 10비트로 표현하기 때문에 0부터 1023까지의 값을 가질 수 있습니다.
  • 5.0 / 1023.0: 이 부분은 1023에 해당하는 값이 5V라는 것을 이용하여 비례식으로 변환하는 것입니다.
  • float형: voltage 변수를 float형으로 선언하여 소수점 이하의 값까지 표현할 수 있도록 합니다.
  • delay(100);: 시리얼 모니터에서 출력되는 값을 확인하기 쉽도록 0.1초 간격으로 출력합니다.

활용 예시

  • 빛 센서: 빛의 세기에 따라 전압이 변하는 센서를 A0에 연결하여 빛의 세기를 측정할 수 있습니다.
  • 온도 센서: 온도에 따라 저항값이 변하는 센서를 이용하여 온도를 측정할 수 있습니다.
  • 습도 센서: 습도에 따라 전압이 변하는 센서를 이용하여 습도를 측정할 수 있습니다.

주의 사항

  • 아날로그 핀에 연결하는 센서의 데이터 시트를 참고하여 정확한 값을 얻을 수 있도록 해야 합니다.
  • 전원 공급이 안정적인지 확인해야 합니다.
  • 노이즈에 의해 값이 변할 수 있으므로 필요한 경우 노이즈 필터를 사용할 수 있습니다.

살아 남을 수 있는 Coding 교육은??? 뭘까요!

By neoy2g