컴퓨터 지식 네트워크 - 컴퓨터 구성 - readSPI'가 이 범위에서 선언되지 않았습니다. 도와주세요. 정말 문제를 찾을 수 없습니까?

readSPI'가 이 범위에서 선언되지 않았습니다. 도와주세요. 정말 문제를 찾을 수 없습니까?

제공해주신 링크 내용으로 볼 때 아두이노 프로그래밍에 관한 질문입니다. 사용자가 통신을 위해 사용자 정의 SPI 핀을 사용하려고 할 때 컴파일 오류가 발생했습니다. 오류 메시지는 'readSPI' 및 'writeSPI' 함수가 범위에 선언되지 않았다는 것입니다.

이 문제가 발생하는 이유는 사용자가 코드 작성 시 'readSPI' 및 'writeSPI' 함수 선언을 적절한 위치에 배치하지 않았기 때문일 수 있습니다. C++에서는 함수를 호출하기 전에 함수를 선언하거나 정의해야 합니다. 이 두 함수가 사용자 정의 보조 함수인 경우 `setup` 및 `loop` 함수 외부에서 사용하기 전에 선언해야 합니다.

다음은 파일 전체에서 액세스할 수 있도록 `readSPI` 및 `writeSPI` 함수 선언을 `setup` 함수 앞에 배치하는 수정된 코드 예제입니다.

``cpp

#include

#define SPI_CLOCK 5 // 클럭 라인

#define SPI_MOSI 6 // 호스트 출력, 슬레이브 입력

#define SPI_MISO 7 // 호스트 입력, 슬레이브 출력

#define SPI_CS 8 // 칩 선택 신호

// 함수 선언

void writeSPI(uint8_t data);

uint8_t readSPI();

void setup() {

pinMode(SPI_CLOCK , OUTPUT);

p>

pinMode(SPI_MOSI, OUTPUT);

pinMode(SPI_MISO, INPUT);

pinMode(SPI_CS, OUTPUT);

digitalWrite(SPI_CS , HIGH); // 초기화 중 칩 선택이 높습니다.

}

void loop() {

// 명령 또는 데이터 쓰기 예

writeSPI(0x80); // 0x80이 쓰여질 명령 또는 데이터라고 가정합니다.

// 명령 또는 데이터 읽기 예시

uint8_t data = readSPI(); 데이터 읽기

}

// 함수 정의

void writeSPI(uint8_t data) {

digitalWrite (SPI_CS, LOW); / 칩 선택을 로우로 당깁니다.

for (int i = 7; i >= 0; i--) {

digitalWrite(SPI_CLOCK, LOW); if (data & (1 << i)) {

digitalWrite(SPI_MOSI, HIGH);

} else {

digitalWrite(SPI_MOSI, LOW);

}

digitalWrite(SPI_CLOCK, HIGH);

}

digitalWrite(SPI_CS, HIGH) ; // 칩 선택 해제

}

uint8_t readSPI() {

digitalWrite(SPI_CS, LOW); // 칩 선택을 로우로 당깁니다.

uint8_t data = 0 ; // 데이터 읽기를 위한 SPI 클록 주기 시뮬레이션

for (int i = 7; i >= 0; i--) {

digitalWrite(SPI_CLOCK, LOW);

데이터 |= (digitalRead(SPI_MISO) << i);

digitalWrite(SPI_CLOCK, HIGH);

}

digitalWrite(SPI_CS , HIGH); // 칩 선택 해제

r

return data;

}

```

이 수정된 코드에서 `writeSPI` 및 `readSPI` 함수의 선언은 ` setup` 함수를 사용하여 `loop` 함수에서 호출할 수 있도록 합니다. 동시에 'writeSPI' 및 'readSPI' 함수의 비트 연산을 일부 조정하여 데이터를 올바르게 보내고 받을 수 있도록 했습니다.

上篇: kindle8과 kpw3 중 어느 것이 더 낫나요? 下篇: Oppoa37 휴대폰은 메모리를 어떻게 확장합니까?
관련 내용