質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

2回答

12130閲覧

was not declared in this scopeが解決できません。

Rivermouth

総合スコア19

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

0グッド

0クリップ

投稿2021/02/13 08:45

サイト

上記のサイトを参考に、ニキシー管をスタティック点灯させたいのですがエラーが発生してしまったので、こちらから質問させていただきます。

経緯

本来はArduino UNO IDEを使用して、Arduino UNOにプログラムを転送したいのですが、

avrdude: stk500_recv(): programmer is not responding

avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00

というエラーが発生してしまい、いろいろと試したのですが解決しなかったのでPlatformIOを使用して転送します。

問題

Arduino UNO IDEでコンパイルした時はエラーは起きなかったのですが、PlatformIOで実行すると以下のエラーが発生します。

Executing task: pio run <

Processing uno (platform: atmelavr; board: uno; framework: arduino)

Verbose mode can be enabled via -v, --verbose option
CONFIGURATION: https://docs.platformio.org/page/boards/atmelavr/uno.html
PLATFORM: Atmel AVR (3.1.0) > Arduino Uno
HARDWARE: ATMEGA328P 16MHz, 2KB RAM, 31.50KB Flash
DEBUG: Current (avr-stub) On-board (avr-stub, simavr)
PACKAGES:

  • framework-arduino-avr 5.1.0
  • toolchain-atmelavr 1.50400.190710 (5.4.0)

LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 5 compatible libraries
Scanning dependencies...
No dependencies
Building in release mode
Compiling .pio/build/uno/src/main.cpp.o
Archiving .pio/build/uno/libFrameworkArduinoVariant.a
Compiling .pio/build/uno/FrameworkArduino/CDC.cpp.o
Compiling .pio/build/uno/FrameworkArduino/HardwareSerial.cpp.o
src/main.cpp: In function 'void setup()':
src/main.cpp:17:27: error: 'nixieWrite' was not declared in this scope
nixieWrite(A, B, C, D, 0);
^
*** [.pio/build/uno/src/main.cpp.o] Error 1
Indexing .pio/build/uno/libFrameworkArduinoVariant.a
==================================================== [FAILED] Took 2.71 seconds ====================================================
The terminal process "pio 'run'" terminated with exit code: 1.
Terminal will be reused by tasks, press any key to close it.

ソースコード

#include <Arduino.h> uint8_t currentValue = 0; //Use pins 10, 11, 12 & 13 of Arduino //Connect to pins A, B, C & D of your SN74141 Nixie driver chip #define A 10 #define B 11 #define C 12 #define D 13 void setup() { pinMode(A, OUTPUT); pinMode(B, OUTPUT); pinMode(C, OUTPUT); pinMode(D, OUTPUT); nixieWrite(A, B, C, D, 0); } void nixieWrite(uint8_t a, uint8_t b, uint8_t c, uint8_t d, uint8_t value){ //D is most significant bit //A is least significant bit digitalWrite(d, (value & 0x08) >> 3); digitalWrite(c, (value & 0x04) >> 2); digitalWrite(b, (value & 0x02) >> 1); digitalWrite(a, value & 0x01); } void loop() { delay(1000); currentValue++; if(currentValue > 9) currentValue = 0; nixieWrite(A, B, C, D, currentValue); } コード

サイトのソースコードをそのままコピペしているので、エラーが出るはずはないのですが。。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

avrdude: stk500_recv(): programmer is not responding

この辺は、avrdudeという外部プログラムを呼び出してArduinoのEEPROMにプログラムを書き込む時のエラーなので、IDEをPlatformIOに変えてもエラーから逃れられない気がしますがどうでしょうか。簡単なプログラムの書き込みを試してみたほうがいいと思います。

このエラーは、何らかの原因でATMega328とUSB-シリアル変換部(純正はATMega16U2)との通信がうまくできなかったりすると出ます。Arduinoの外部接続をすべて外したり、コンパイル終盤でArduinoのリセットを押したりとかで書き込みモードに入れることがあるようです。

Arduinoは、ソースに若干手を入れたりもするようです。そのへんでArduinoIDEでは出なかったエラーが出るのでしょう。エラーになるならないをIDEに頼らずに、C/C++の基本に忠実に、事前に宣言・定義をしたシンボルを記述するように(具体的にはak.nさんの回答の通り)しておいたほうがよいかと思います。

投稿2021/02/13 11:39

thkana

総合スコア7703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Rivermouth

2021/02/15 06:12

コメントありがとうございます。 簡単な Lチカあたりをやってみようと思います。
guest

0

同じ環境がないので、一般的なCの話として回答します(間違っていたらごめんなさい)
setup()の中でnixieWrite()を呼び出しているので、nixieWrite()がsetup()より前で定義されていないと
コンパイラが通らないと思います。

void nixieWrite(uint8_t a, uint8_t b, uint8_t c, uint8_t d, uint8_t value){ ... } void setup() { ... } void loop() { ...}

とするか、

void nixieWrite(uint8_t a, uint8_t b, uint8_t c, uint8_t d, uint8_t value); void setup() { ... } void nixieWrite(uint8_t a, uint8_t b, uint8_t c, uint8_t d, uint8_t value){ ... } void loop() { ...}

でどうでしょうか。

投稿2021/02/13 09:28

ak.n

総合スコア291

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Rivermouth

2021/02/15 06:11

コメントありがとうございます。 ご指摘の通りに修正したら、タイトルのエラーは出なくなりますが、 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00 のエラーは出てしまいます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問