Arduino error stray 302 in program arduino

Всем привет и добрый вечер, помогите пожалуйста с одной проблемой: этот скетч точно рабочий, поскольку раньше работал и компилировался без проблем, однако потом началось exit status 1 stray '302' in program и все. Выделяется последняя строчка. Если ее удалить, выделиться следующая. и так далее. ...

Всем привет и добрый вечер, помогите пожалуйста с одной проблемой: этот скетч точно рабочий, поскольку раньше работал и компилировался без проблем, однако потом началось

exit status 1

stray ‘302’ in program

и все. Выделяется последняя строчка. Если ее удалить, выделиться следующая. и так далее.

В чем дело?

//передатчик

#include <VirtualWire.h>

void setup()

{

vw_set_ptt_inverted(true); // Required by the RF module

vw_setup(2000); // bps connection speed

vw_set_tx_pin(3); // Arduino pin to connect the receiver data pin

}

void loop() {

//Message to send:

const char *msg = «12347779999999999999999999999567»;

vw_send((uint8_t *)msg, strlen(msg));

vw_wait_tx();

delay(200);

}

здесь таже проблема. только выделяется последняя скобка))

post-0-0-01856600-1456419352_thumb.pngpost-0-0-31979400-1456419361_thumb.png

//приемник

#include <VirtualWire.h>

void setup()

{

Serial.begin(9600); // Configure the serial connection to the computer

vw_set_ptt_inverted(true); // Required by the RF module

vw_setup(2000); // bps connection speed

vw_set_rx_pin(3); // Arduino pin to connect the receiver data pin

vw_rx_start(); // Start the receiver

}

void loop()

{

uint8_t buf[VW_MAX_MESSAGE_LEN];

uint8_t buflen = VW_MAX_MESSAGE_LEN;

if (vw_get_message(buf, &buflen)) // We check if we have received data

{

int i;

// Message with proper check

for (i = 0; i < buflen; i++)

{

Serial.write(buf); // The received data is stored in the buffer

// and sent through the serial port to the computer

}

Serial.println();

}

}

Arduino.ru

Exit status 1 stray ‘/302’ i n program

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

При попытке компилирования выдаёт эту ошибку

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Скетч тянутый из Иинтернета?

Загрузите его в Word, включите показ невидимых символов и вчистите всю хрень, которую увидите. Скорее всего — в пятой строке, но может ещё где.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Зачем в 6-ой строке в объявлении массива после последнего элемента запятая?

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Теперь новая ошибка:

exit status 1
void value not ignored as it ought to be

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Теперь новая ошибка:

Что же нам теперь делать?

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

В строке 20 написан бред. Функция requestTemperatures() не возвращает никакого значения (имеет тип void), а Вы пытаетесь её значение присвоить переменной i.

Вы будете каждую ошибку компиляции сюда выкладывать или через одну? И если уж выкладываете, так хоть выкладывайте полностью. Я понимаю, что для Вас там ничего не значащий набор букв, но нам-то зачем лишние ребусы загадывать? Может попробуете какую-нибудь книжку почитать, чтобы хоть немного понимать, что делаете?

Источник

I keep on getting a stray ‘302’ in program error.How do I fix it.This is in arduino uno [duplicate]

3 Answers 3

The culprits are the no-break spaces (U+00A0) you sometimes use in your indentation. Each of them, when encoded in UTF-8, is represented by the pair of bytes 0xc2 0xa0 (or 0302 0240 in octal). You should indent with regular spaces (U+0020) instead.

Specifically, you have no-break spaces as the first characters of each of the following 8 lines:

Beware when you copy code from sites which have formatead fonts in their content. As you copy and paste these font-formatead codes, chances are that you copy the font’s formats as well. Once you paste these formatead fonts on your code, the text editor from the Arduino IDE will not recognize the special characters used on the font’s formatting; thus, it will not show them on your screen. However, the compiler will read them and will strive to compile them as if they were part of your code. Since the compiler does not «understand» these special characters, it will warn you about their existence by identifying them as «stray» pieces of code. This is why some code-related sites, such as GitHub, gives you the opportunity of copying RAW CODE, so you do not copy the formatead fonts that some developers use to showcase their much appreciated contributions. I sincerely hope this works for you. Best regards.

Just try to removes extra spaces that are outside the scopes (curly braces < and >) and it’ll work fine.

Linked

Hot Network Questions

Site design / logo © 2022 Stack Exchange Inc; user contributions licensed under CC BY-SA . rev 2022.10.7.15380

By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.

Источник

Arduino.ru

в чем ошибка

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

#define DATA_PIN 13 // пин данных (англ. data)
#define LATCH_PIN 12 // пин строба (англ. latch)
#define CLOCK_PIN 11 // пин такта (англ. clock)
#define BUTTON_PIN 10

int clicks = 0;
boolean buttonWasUp = true;
byte segments[10] = <
0b01111101, 0b00100100, 0b01111010, 0b01110110, 0b00100111,
0b01010111, 0b01011111, 0b01100100, 0b01111111, 0b01110111
>;

void setup()
<
pinMode(DATA_PIN, OUTPUT);
pinMode(CLOCK_PIN, OUTPUT);
pinMode(LATCH_PIN, OUTPUT);
pinMode(BUTTON_PIN, INPUT_PULLUP);
>

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
«Показать подробный вывод во время компиляции»

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

1AppDataLocalTemparduino_build_677421 -warnings=none -build-cache C:Users2AEA

1AppDataLocalTemparduino_cache_350815 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=C:Program FilesArduinohardwaretoolsavr -prefs=runtime.tools.avr-gcc.path=C:Program FilesArduinohardwaretoolsavr -prefs=runtime.tools.avrdude.path=C:Program FilesArduinohardwaretoolsavr -verbose C:UsersАнварDocumentsArduinosketch_seven_segment_klikersketch_seven_segment_kliker.ino
C:Program FilesArduinoarduino-builder -compile -logger=machine -hardware C:Program FilesArduinohardware -tools C:Program FilesArduinotools-builder -tools C:Program FilesArduinohardwaretoolsavr -built-in-libraries C:Program FilesArduinolibraries -libraries C:UsersАнварDocumentsArduinolibraries -fqbn=arduino:avr:uno -ide-version=10802 -build-path C:Users2AEA

1AppDataLocalTemparduino_build_677421 -warnings=none -build-cache C:Users2AEA

Источник

Arduino.ru

Прошу помощи разобраться.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Доброго втремени суток господа форумчане. Прошу помощи разобраться в этом проекте. Что то я ника не могу понять почему он не хочет компелироваться.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

укажите ошибку компиляции.

Только пожалуйста. не в виде скриншота — просто скопируйте как текст и вставьте в сообщение.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Как минимум, 22 и 23 строки — лишние

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

послушайте, вы читаете, что вам пишут? — ошибку компиляции укажите!

Чей это проект и кто автор — здесь никому не интересно. Если у вас претензии к автору скетче — ему и пишите.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Так вот еще раз новый скейч. (в том возможны поправки этот не копанный)

поначалу ему не хватало библиотеки для компиляции «TB6612FNG.h»

я еедобавил в папку со скейчем, по другому он ее не видет.

А теперь вот такая ошибка.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Esp8266_UDP_TB6612_Ex01:19: error: stray ‘302’ in program

такая ошибка возникает, если вы скопировали скетч из интернета как HTML, а не как текст.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Нет там у автора кнопка есть. Он копируется архивом в нем две папки для windows и ios

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Нет там у автора кнопка есть. Он копируется архивом в нем две папки для windows и ios

Ну значит в архиве так лежит. Но Вам совершенно чётко пишут — в строках непонятные символы.

Можете даже в Word скетч открыть, включить отображение непечатаемых символов и Вы их все увидите. Концы строк естественно нужны, а остальное — мусор.

Источник

mirsovetov.net

Андрощук Александр, ИТ решения, советы, заметки…

stray # in program

При компиляции проекта в Android IDE возникла ошибка

LampCore:20: error: stray ‘302’ in program

Код, который вызывал ошибку не был какой то особенный, была объявлена простенькая структура с полями:

В моем случае ошибка возникла из за того, что я случайно в названии структуры Config написал не латинский символ C. Самое интересное что с виду все кажется в порядке, а на самом деле это не так, и возникает ошибка «stray ‘320’ in program».

Так что решение — использовать только латинские символы (это не касается комментариев).

Также могут возникать другие ошибки такого же рода, только с другим кодом

Скорее всего что следующие ошибки:

error stray 2 in program

error stray 200 in program

error stray 201 in program

error stray 213 in program

error stray 223 in program

error stray 226 in program

error stray 227 in program

error stray 240 in program

error stray 253 in program

error stray 273 in program

error stray 302 in program

error stray 320 in program

error stray 321 in program

error stray 340 in program

error stray 342 in program

error stray 357 in program

error stray 361 in program

тоже связанны с этой проблемой, если это не так, пожалуйста отпишитесь в комментариях.

Источник

#include <CapacitiveSensor.h>

CapacitiveSensor capSensor = CapacitiveSensor(4,2);// 1M resistor between pins 4 & 2, pin 2 is sensor pin, add a wire and or foil

int threshold = 100;//this is an important number which is a preset capacitance reading. Check the serial monitor when touching the foil or hovering the hand over the foil. You need to determine what is the ACTUAL number the sensor is reading, then change this threshold to that number in order to make the sensor to work appropriately.

const int ledPin = 12;

//define notes’ frequency
const int c = 261;//C4
const int d = 294;//D4
const int e = 329;//E4
const int f = 349;//F4
const int g = 391;//G4
const int gS = 415;//G4#
const int a = 440;//A4
const int aS = 455;//A4#
const int b = 466;//B4
const int cH = 523;//C5
const int cSH = 554;//C5#
const int dH = 587;//D5
const int dSH = 622;//D5#
const int eH = 659;//E5
const int fH = 698;//F5
const int fSH = 740;//F5#
const int gH = 784;//G5
const int gSH = 830;//G5#
const int aH = 880;//A5

//digital pin 8 is the output pin
const int buzzerPin = 8;

//define note lengths
int Q = 500;
int H = 2Q;
int E = 0.5
Q;
int S = 0.25Q;
int ED = 0.75
Q;

void setup()

{

Serial.begin(9600);

pinMode(ledPin,OUTPUT);

//Setup pin modes
pinMode(buzzerPin, OUTPUT);

}

void loop() //create a variable type long to hold the sensor’s value.

{

delay(1+H);//additional rest between repeats

long sensorValue = capSensor.capacitiveSensor(30); //30 samples

Serial.println(sensorValue); // print sensor output

if(sensorValue > threshold)

{

digitalWrite(ledPin,HIGH);
//duration is defined as quarter note 500, delay at least 1ms for each note so you can hear it

tone(buzzerPin, a, Q);
delay(1+Q);
tone(buzzerPin, a, Q);
delay(1+Q);
tone(buzzerPin, a, Q);
delay(1+Q);
tone(buzzerPin, f, ED);
delay(1+ED);
tone(buzzerPin, cH, S);
delay(1+S);
tone(buzzerPin, a, Q);
delay(1+Q);
tone(buzzerPin, f, ED);
delay(1+ED);
tone(buzzerPin, cH, S);
delay(1+S);
tone(buzzerPin, a, H);
delay(1+H);

tone(buzzerPin, eH, Q);
delay(1+Q);
tone(buzzerPin, eH, Q);
delay(1+Q);
tone(buzzerPin, eH, Q);
delay(1+Q);
tone(buzzerPin, fH, ED);
delay(1+ED);
tone(buzzerPin, cH, S);
delay(1+S);
tone(buzzerPin, gS, Q);
delay(1+Q);
tone(buzzerPin, f, ED);
delay(1+ED);
tone(buzzerPin, cH, S);
delay(1+S);
tone(buzzerPin, a, H);
delay(1+H);

delay(1+H);//additional rest between repeats

}

else{

digitalWrite(ledPin,LOW);

}

delay(10);

}

Для других ваш вопрос выглядит:
Я взял готовые куски программ, их как то слепил, угадайте, что у меня не так.

взял скетч из этого видео

#define BLYNK_PRINT Serial

#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <DHT.h>

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = «32b454a4ec7c459e9b75014dcded44a»;

// Your WiFi credentials.
// Set password to «» for open networks.
char ssid[] = «YourNetworkName»;
char pass[] = «YourPassword»;

#define DHTPIN 2 // What digital pin we’re connected to

// Uncomment whatever type you’re using!
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22, AM2302, AM2321
//#define DHTTYPE DHT21 // DHT 21, AM2301

DHT dht(DHTPIN, DHTTYPE);
BlynkTimer timer;

// This function sends Arduino’s up time every second to Virtual Pin (5).
// In the app, Widget’s reading frequency should be set to PUSH. This means
// that you define how often to send data to Blynk App.
void sendSensor()
{
float h = dht.readHumidity();
float t = dht.readTemperature(); // or dht.readTemperature(true) for Fahrenheit

if (isnan(h) || isnan(t)) {
Serial.println(«Failed to read from DHT sensor!»);
return;
}
// You can send any value at any time.
// Please don’t send more that 10 values per second.
Blynk.virtualWrite(V5, h);
Blynk.virtualWrite(V6, t);
}

void setup()
{
// Debug console
Serial.begin(9600);

Blynk.begin(auth, ssid, pass);
// You can also specify server:
//Blynk.begin(auth, ssid, pass, «blynk-cloud.com», 8442);
//Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,100), 8442);

dht.begin();

// Setup a function to be called every second
timer.setInterval(1000L, sendSensor);
}

void loop()
{
Blynk.run();
timer.run();
}

Содержание

  1. Arduino.ru
  2. Регистрация новых пользователей и создание новых тем теперь только на новом форуме https://forum.arduino.ru
  3. forum.arduino.ru
  4. в чем ошибка
  5. Arduino.ru
  6. Регистрация новых пользователей и создание новых тем теперь только на новом форуме https://forum.arduino.ru
  7. forum.arduino.ru
  8. Прошу помощи разобраться.
  9. error: stray ‘2’ in program #2
  10. Comments
  11. mirsovetov.net
  12. Андрощук Александр, ИТ решения, советы, заметки…
  13. stray # in program
  14. RoboCraft
  15. 52 комментария на «“Подключаем кучу устройств к Arduino по 5 проводам”»
  16. Добавить комментарий Отменить ответ

Arduino.ru

Регистрация новых пользователей и создание новых тем теперь только на новом форуме https://forum.arduino.ru

forum.arduino.ru

в чем ошибка

#define DATA_PIN 13 // пин данных (англ. data)
#define LATCH_PIN 12 // пин строба (англ. latch)
#define CLOCK_PIN 11 // пин такта (англ. clock)
#define BUTTON_PIN 10

int clicks = 0;
boolean buttonWasUp = true;
byte segments[10] = <
0b01111101, 0b00100100, 0b01111010, 0b01110110, 0b00100111,
0b01010111, 0b01011111, 0b01100100, 0b01111111, 0b01110111
>;

void setup()
<
pinMode(DATA_PIN, OUTPUT);
pinMode(CLOCK_PIN, OUTPUT);
pinMode(LATCH_PIN, OUTPUT);
pinMode(BUTTON_PIN, INPUT_PULLUP);
>

Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
«Показать подробный вывод во время компиляции»

1AppDataLocalTemparduino_build_677421 -warnings=none -build-cache C:Users2AEA

1AppDataLocalTemparduino_cache_350815 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=C:Program FilesArduinohardwaretoolsavr -prefs=runtime.tools.avr-gcc.path=C:Program FilesArduinohardwaretoolsavr -prefs=runtime.tools.avrdude.path=C:Program FilesArduinohardwaretoolsavr -verbose C:UsersАнварDocumentsArduinosketch_seven_segment_klikersketch_seven_segment_kliker.ino
C:Program FilesArduinoarduino-builder -compile -logger=machine -hardware C:Program FilesArduinohardware -tools C:Program FilesArduinotools-builder -tools C:Program FilesArduinohardwaretoolsavr -built-in-libraries C:Program FilesArduinolibraries -libraries C:UsersАнварDocumentsArduinolibraries -fqbn=arduino:avr:uno -ide-version=10802 -build-path C:Users2AEA

1AppDataLocalTemparduino_build_677421 -warnings=none -build-cache C:Users2AEA

Источник

Arduino.ru

Регистрация новых пользователей и создание новых тем теперь только на новом форуме https://forum.arduino.ru

forum.arduino.ru

Прошу помощи разобраться.

Доброго втремени суток господа форумчане. Прошу помощи разобраться в этом проекте. Что то я ника не могу понять почему он не хочет компелироваться.

укажите ошибку компиляции.

Только пожалуйста. не в виде скриншота — просто скопируйте как текст и вставьте в сообщение.

Как минимум, 22 и 23 строки — лишние

послушайте, вы читаете, что вам пишут? — ошибку компиляции укажите!

Чей это проект и кто автор — здесь никому не интересно. Если у вас претензии к автору скетче — ему и пишите.

Так вот еще раз новый скейч. (в том возможны поправки этот не копанный)

поначалу ему не хватало библиотеки для компиляции «TB6612FNG.h»

я еедобавил в папку со скейчем, по другому он ее не видет.

А теперь вот такая ошибка.

Esp8266_UDP_TB6612_Ex01:19: error: stray ‘302’ in program

такая ошибка возникает, если вы скопировали скетч из интернета как HTML, а не как текст.

Нет там у автора кнопка есть. Он копируется архивом в нем две папки для windows и ios

Нет там у автора кнопка есть. Он копируется архивом в нем две папки для windows и ios

Ну значит в архиве так лежит. Но Вам совершенно чётко пишут — в строках непонятные символы.

Можете даже в Word скетч открыть, включить отображение непечатаемых символов и Вы их все увидите. Концы строк естественно нужны, а остальное — мусор.

Источник

error: stray ‘302’ in program #2

Hello,
compiling your code gave the following errors.
Pleas can you help me?
BR
Juergen

In file included from /Users/Juergen-S/Desktop/ESP32-e-Paper-Weather-Display/ESP32-e-Paper-Weather-Display.ino:20:0:
credentials.h:13: error: stray ‘302’ in program
const char * host = «api.wunderground.com»;
^
credentials.h:13: error: stray ‘240’ in program
credentials.h:13: error: stray ‘302’ in program
credentials.h:13: error: stray ‘240’ in program
credentials.h:13: error: stray ‘302’ in program
credentials.h:13: error: stray ‘240’ in program
credentials.h:14: error: stray ‘302’ in program
String City = «Kassel»; // Your home city
^
credentials.h:14: error: stray ‘240’ in program
credentials.h:14: error: stray ‘302’ in program
credentials.h:14: error: stray ‘240’ in program
credentials.h:14: error: stray ‘302’ in program
.
.
..

The text was updated successfully, but these errors were encountered:

How have you downloaded the code? Ideally get the zip version, it looks to me that these are copy/paste errors. Usually if you retype the errant lines it fixes the problem. Sometimes selecting the text and then pasting it into say word or an email body as text only removes these unseen escape characters.

I just download the latest 4.2″ version and it compiles correctly. What your getting is hidden characters. See here for an example: https://arduino.stackexchange.com/questions/30581/stray-302-in-program-error-when-compiling

Download the zip.

Copy the files to your IDE location.

Open the Sketch with the IDE

usually it will be the » symbol that need to be deleted and replaced with a simple quote.
e.g.
const char * host = api.wunderground.com;

Then:
const char * host = «api.wunderground.com»;

The credentials.h in your ZIP doesn’t work!
I copy the raw-text from the source on github and it works now!

I have copied a new version into the repository.

CapacitiveSensor capSensor = CapacitiveSensor(4,2);// 1M resistor between pins 4 & 2, pin 2 is sensor pin, add a wire and or foil

int threshold = 100;//this is an important number which is a preset capacitance reading. Check the serial monitor when touching the foil or hovering the hand over the foil. You need to determine what is the ACTUAL number the sensor is reading, then change this threshold to that number in order to make the sensor to work appropriately.

const int ledPin = 12;

//define notes’ frequency
const int c = 261;//C4
const int d = 294;//D4
const int e = 329;//E4
const int f = 349;//F4
const int g = 391;//G4
const int gS = 415;//G4#
const int a = 440;//A4
const int aS = 455;//A4#
const int b = 466;//B4
const int cH = 523;//C5
const int cSH = 554;//C5#
const int dH = 587;//D5
const int dSH = 622;//D5#
const int eH = 659;//E5
const int fH = 698;//F5
const int fSH = 740;//F5#
const int gH = 784;//G5
const int gSH = 830;//G5#
const int aH = 880;//A5

//digital pin 8 is the output pin
const int buzzerPin = 8;

//define note lengths
int Q = 500;
int H = 2Q;
int E = 0.5
Q;
int S = 0.25Q;
int ED = 0.75
Q;

//Setup pin modes
pinMode(buzzerPin, OUTPUT);

void loop() //create a variable type long to hold the sensor’s value.

delay(1+H);//additional rest between repeats

long sensorValue = capSensor.capacitiveSensor(30); //30 samples

Serial.println(sensorValue); // print sensor output

tone(buzzerPin, a, Q);
delay(1+Q);
tone(buzzerPin, a, Q);
delay(1+Q);
tone(buzzerPin, a, Q);
delay(1+Q);
tone(buzzerPin, f, ED);
delay(1+ED);
tone(buzzerPin, cH, S);
delay(1+S);
tone(buzzerPin, a, Q);
delay(1+Q);
tone(buzzerPin, f, ED);
delay(1+ED);
tone(buzzerPin, cH, S);
delay(1+S);
tone(buzzerPin, a, H);
delay(1+H);

tone(buzzerPin, eH, Q);
delay(1+Q);
tone(buzzerPin, eH, Q);
delay(1+Q);
tone(buzzerPin, eH, Q);
delay(1+Q);
tone(buzzerPin, fH, ED);
delay(1+ED);
tone(buzzerPin, cH, S);
delay(1+S);
tone(buzzerPin, gS, Q);
delay(1+Q);
tone(buzzerPin, f, ED);
delay(1+ED);
tone(buzzerPin, cH, S);
delay(1+S);
tone(buzzerPin, a, H);
delay(1+H);

delay(1+H);//additional rest between repeats

Источник

mirsovetov.net

Андрощук Александр, ИТ решения, советы, заметки…

stray # in program

При компиляции проекта в Android IDE возникла ошибка

LampCore:20: error: stray ‘302’ in program

Код, который вызывал ошибку не был какой то особенный, была объявлена простенькая структура с полями:

В моем случае ошибка возникла из за того, что я случайно в названии структуры Config написал не латинский символ C. Самое интересное что с виду все кажется в порядке, а на самом деле это не так, и возникает ошибка «stray ‘320’ in program».

Так что решение — использовать только латинские символы (это не касается комментариев).

Также могут возникать другие ошибки такого же рода, только с другим кодом

Скорее всего что следующие ошибки:

error stray 2 in program

error stray 200 in program

error stray 201 in program

error stray 213 in program

error stray 223 in program

error stray 226 in program

error stray 227 in program

error stray 240 in program

error stray 253 in program

error stray 273 in program

error stray 302 in program

error stray 320 in program

error stray 321 in program

error stray 340 in program

error stray 342 in program

error stray 357 in program

error stray 361 in program

тоже связанны с этой проблемой, если это не так, пожалуйста отпишитесь в комментариях.

Источник

RoboCraft

Стандартная Arduino/CraftDuino имеет 20 цифровых пинов (6 из них — ещё и аналоговые входы), что бывает недостаточно для решения некоторых задач: тот же LCD-дисплей требует минимум 6 пинов. Для подключения нескольких устройств, не требующих двунаправленной передачи данных, вполне подойдут сдвиговые регистры.

В предыдущих статьях про вывод и ввод через сдвиговые регистры мы уже рассмотрели самое простое их применение, а именно управление светодиодами путём посылки байта и считывание состояний кнопок. Для того, чтобы заставить работать тот же LCD-дисплей через регистр, придётся применить парочку архитектурных программерских трюков. При наличии некоторого опыта в C++ это не покажется сложным (:

Начнём с того, что авторы библиотек Arduino старались сильно не заморачиваться насчёт расширяемости функционала, и не получится просто сказать объекту LCD «подключись через сдвиговый регистр». Так что придётся немножко поработать руками и мозгами за них: доработать библиотеки напильником. Заодно упростим себе работу со SPI. Ну что ж, приступим.

С первого взгляда не очень-то понятно, а как, чёрт возьми, заставить работать тот же LCD через сдвиговый регистр? Что записывать в регистр, какие его выводы должны менять состояние и как? Очевидно, что для начала нужно как-то предоставить возможность управлять отдельными выводами регистра так же, как и обычными пинами Arduino.

Вспомним, как подключается LCD, а затем заглянем в исходный код библиотеки LiquidCrystal и увидим, что там чуть ли не в каждой функции дёргаются пины, к которым подключен LCD, вызовами функции digitalWrite(), а режимы этих пинов устанавливаются через pinMode(). Логично будет написать такие же функции и для сдвиговых регистров.

Немного забегая вперёд, скажу, что я уже написал класс SPI_Bus для удобной работы с устройствами по SPI (его я опишу позже), и в него нужно только добавить поддержку управления выводами.

В целях унификации определим интерфейс «контроллера линии»:

Этот интерфейс содержит объявления функций lineConfig(), lineWrite() и lineRead() — это аналоги pinMode(), digitalWrite() и digitalRead(). Всю работу с нужными пинами библиотека LCD должна будет делать через интерфейс LineDriver. Для начала создадим драйвер по умолчанию, который будет просто вызывать стандартные функции:

Теперь добавим в класс LiquidCrystal указатель на экземпляр LineDriver и изменим конструкторы класса и функцию init() так, чтобы они принимали соответствующий аргумент:

По умолчанию аргумент line_driver будет равным нулю и его можно не указывать при объявлении объекта LCD-дисплея — тогда будет использоваться драйвер по умолчанию (DefaultLineDriver) и дисплей будет работать, как обычно, через пины Arduino.

Теперь добавим поддержку интерфейса LineDriver в класс для работы с SPI:

Как можно заметить из приведённого кода, в классе SPI_Bus данные буферизуются: если из регистра ничего не считывать, а только управлять отдельными его выводами через функционал LineDriver, то регистр будет поддерживать уровни напряжений на выводах до тех пор, пока вы не установите новые. Это как раз то, что нужно для управления устройствами — менять состояния отдельных выводов, не трогая при этом другие.

Всё, теперь можно работать со сдвиговыми регистрами, как с наборами пинов:

Так как сделано это через реализацию интерфейса LineDriver, мы можем передавать указатель на объект сдвигового регистра в конструктор объекта LCD:

Теперь при работе с LCD будут меняться уровни не на пинах Arduino, а на выходах сдвигового регистра. Одна строка кода для подключения регистра, и один дополнительный аргумент для объекта LiquidCrystal — и можно управлять дисплеем по 3м проводам SPI. При этом ещё два выхода регистра остались свободными, и мы можем их использовать, как обычные пины.

Но мы не ограничимся одним лишь LCD — есть же ещё сервоприводы. Я проделал аналогичные манипуляции с библиотекой Servo, и теперь точно так же можно управлять сервоприводами через сдвиговый регистр:

А что насчёт ввода? Ранее я писал о чтении состояний кнопок через сдвиговый регистр. Теперь, с библиотекой SPI_Bus, это можно сделать так:

А теперь пора использовать наши сдвиговые регистры на полную катушку — подключим к Arduino сразу несколько устройств всего по 5 проводам: LCD-дисплей, 4 сервопривода, RGB-светодиод, несколько кнопок и dip-переключатель на 3 позиции.

Схема подключения:

Вся логика запитана от +5 В Craftduino, а сервы — напрямую от +5 В блока питания. Сама Craftduino запитана от +12 В провода БП. Тут нужно быть поосторожнее с нагрузкой: если она будет слишком велика, то стабилизатор на Craftduino будет перегреваться из-за слишком высокого входного напряжения. В этой схеме подавать +12 В вполне допустимо, т.к. компоненты, запитанные от крафтины, не особо жадные.

Общий вид:

Здесь я сделал пару хитростей для уменьшения количества проводов. Во-первых, сделал breakout-платы для 74HC595 (в корпусах SSOP), которые легко соединяются каскадно, используя общие линии SPI и питание:

Во-вторых, сделал для сигнальных линий сервоприводов 4-жильный шлейф:

Просто взял 4 жилы от старого шлейфа для привода гибких дисков (флопарей), припаял к ним 4 пина гребёнки PLS и залепил всё это поликапролактоном (ПКЛ) — последний для этих целей рулит не по-детски (:

Ну, и в-третьих, припаял к LCD-дисплею легендарный транзистор КТ315 с килоомным резистором на базе — для управления подсветкой, подстроечный резистор на 10 кОм — для настройки контрастности, а также 9-жильный шлейф (4 линии данных DB7-DB4, Enable, RS, подсветка, +5V, GND):

Можете рассмотреть некоторые части системы отдельно. Вот сдвиговые регистры 74HC595, к которым подключены LCD, сервы и RGB-светодиод:

Регистр 74HC165 c подключенными кнопками и dip-переключателем:

Заметьте, кнопки и dip-переключатель подключены к «земле» резисторами на 1 кОм — я это сделал лишь потому, что провода ещё больше загромоздили бы плату. Так как к питанию они подключены через резисторы на 10 кОм, получается, что входы 74HC165 подключены к резистивным делителям напряжения с коэффициентом 10:1, но так как при нажатии кнопки делитель выдаёт напряжение около 0.5 В, это не вызывает никаких проблем — такое напряжение является логическим нулём, так как меньше необходимого порога.

Можете убедиться, к Craftduino идёт всего 5 сигнальных проводов:

Ну и повторюсь — питается это всё от обычного компьютерного блока питания — оттуда берётся +12 В на вход Craftduino, +5 В для питания серв и «земля»:

Суть эксперимента такова: пусть при щёлкании dip-переключателем включается/выключается подсветка LCD и загораются/гаснут два значка на нём, при нажатии и удержании кнопок вращаются сервоприводы, и параллельно ещё меняются цвета RGB-светодиода. Для этого примера потребуются библиотеки LineDriver, SPI_Bus, ServoExt и LiquidCrystalExt, ссылки на которые приведены в конце статьи.

А теперь видео-демка:

Этот исходник в виде файла вы можете взять тут. Библиотеки лежат в репозитории RoboCraft на GitHub, можно скачать архивы самых свежих версий: LineDriver, SPI_Bus, ServoExt и LiquidCrystalExt.
Есть принципиальная схема в формате программы DipTrace.
Рисунки печатной платы — верх и низ — имеют разрешение 600 DPI (точек на дюйм), распечататься они должны в размере около одного квадратного дюйма. Так же есть проект платы в формате DipTrace. Резисторы на плате должны быть номиналом около 100 кОм, но у меня были только 4.7 кОм — их и пришлось поставить. На работу платы не влияет (:
Фотки из статьи доступны в альбоме на Яндекс.Фотках.

  • Три макетки Breadbord
  • Craftduino
  • LCD-дисплей на базе контроллера HD44780, 8×2 символов
  • Сервоприводы SG-90 (2 шт.) и Robbe 10g (2 шт.)
  • RGB-светодиод
  • Сдвиговые регистры 74HC595 и 74HC165. У меня 74HC595 в корпусах SSOP, посаженные на платы, но ничто не мешает вам использовать вариант в DIP-корпусе — просто придётся соединять всё это кучей проводов
  • 4 кнопки и один dip-переключатель
  • Резисторы 10 кОм, 1.5 кОм, 1 кОм и 500 Ом, один подстроечный резистор на 10 кОм (можно поставить и здоровенный потенциометр такого же номинала)
  • Транзистор КТ315 (подойдёт любой другой)

Disclaimer
Будьте аккуратны с подключением питания и ничего не напутайте — блок питания запросто может выдать ток в несколько ампер, и если эти амперы достанутся Arduino, а не сервам, то Arduino от этого жужжать и вращаться не станет. Если у вас после прочтения этой статьи сгорит дом, собака и подшивка Playboy — я не виноват (:

52 комментария на «“Подключаем кучу устройств к Arduino по 5 проводам”»

мега-супер!
на видео заметил, что верхняя серва иногда немного дёргается 🙂

нижняя тоже, возможно автор не в тот момент кнопку отпускал.
Спасибо за интересную статью! я уж думал мегу доставать

Тут и дребезг контактов, и неучтённые задержки от SPI в библиотеке ServoExt. Последнюю я в ближайшее время постараюсь допилить — там вообще адовый говнокод (камень в сторону разработчиков библиотеки).

Интерсная статья, вот только arduino содержит 20 цифровых пинов. ДВАДЦАТЬ.
Юзание аппаратного инф. обмена — зачот.
Однако минусов такого использования два — никаких тебе внешних прерываний и быстрое снижение скорости работы периферии.

Дисклеймер порадовал 🙂 Хоть к 100 Амперному источнику исправную ардуинку подруби — будет нормально работать и кушать свои честные 50мА.

Ну да, тут особо не поразгоняешься, когда аппаратно только SPI.transfer() может работать, а вся остальная работа делается библиотекой SPI_Bus. Хотя для конкретных задач можно написать нечто более ограниченное в возможностях, но менее тормозное. Кстати, о скоростях: у gcc с оптимизацией кода для AVR явные проблемы robocraft.ru/forum/viewtopic.php?f=27&t=26.
Что до прерываний, то они есть в более продвинутых девайсах, как-то I2C-расширителях выводов. О них я в своё время тоже напишу. Но сдвиговые регистры банально дешевле в разы, к тому же.
А дисклеймер скорее про нечаянное подключение питания с БП на линии логики. Такое иногда случается, но понимаешь это обычно по вспышке и характерному запаху.

не-не-не. Никаких расширителей при прерываниях! Я имею в виду конкретно прерывания МК -INT и PCINT. (ну и входной захват по таймеру и аналоговый компаратор до кучи) Без них о RTOS например и речи быть не может. Когда какой-то обслуживающий контроллер типа как описано — последовательный опрос/обновление применимы. но когда речь идет о следящей системе, без прерываний никуда.
А скорость работы вполне себе высокая — из SPI в МК при определенной сноровке можно и Мбиты выжимать. Речь идет о том, что девайсов много и в конечном итоге обновление может стать очень медленным.

Дык я о том, что I2C-расширители имеют выход INT, который можно подрубить к МК — тогда можно будет не заниматься постоянным опросом в цикле. Кстати, скорости I2C при этом (400 кГц) вполне хватит.

Мде, мегу купить проще. Хоть 1280 за 30$ сразу чем брать за 25$ UNO, а потом выдумывать, кодить и прочее — скупой платит дважды народная мудрость…

Смотря, какие цели и финансы. Если уж на то пошло, дешевле взять китайский клон Arduino Nano за ещё меньшие деньги и пару грошовых сдвиговых регистров. Тем более, эта статья может служить трамплином в тему расширения выводов голого МК с очень малым количеством выводов — ATtiny13A, например, или какого-нибудь PIC. Мир не сошёлся клином на одном Arduino (:
К тому же, я писал этот код скорее для демонстрации одного из методов программирования, который позволяет абстрагироваться от аппаратной части и повысить поддерживаемость и расширяемость кода. На этих принципах строятся такие сложные системы, как ядро Linux — его модель драйверов многоуровневая, и позволяет писать кроссплатформенный код: к примеру, драйвер какой-нибудь USB веб-камеры или DVD-ROM в большинстве случаев будет работать одинаково успешно и на x86, и на ARM без переписывания кода.

А теперь посчитайте то время которое потратили на код программы?! Мне в 10раз быстрее заработать 30у.е. на ардуино мегу 1280 чем потратить неделю-две на код + его отладку еще месяц для оттачивания. В итоге выигрыш нулевой. Этот метод лишь тем кто УЖЕ имеет что-то и ему не хватает портов. А тем кто планирует проект где будет море всего действительно проще сразу купить мегу. Ведь всё потом упрется в обьём ОЗУ и ФЛЕША в мелких МК

да и в принципе никто не мешает к готовой ардуине сделать «распределитель» расширитель, ну как угодно назовите — добавить просто одну еще атмегу в самом простом обвязе(кварц да 2 кондера)(я брал атмега8а дип + кварц ровно 2 бакса на Украине) и на ней делать 2ю программу которая будет строго взаимодействовать с первой ардуиной общение через сериал порты, тут и распределенность и цена смешная)
Теперь по поводу цен, нано будет всеравно не меньше 20у.е., 2 — 595 будут еще 1 доллар +нужен текстолит, нужно рисовать плату, травить, сверлить еще 1-2вечера нав всё, итого выйдет 22 и выше у.е. А мега1280 с 54портами всего 30 долларов, и где смысл? Так еще бонус больше прерываний, больше озу, флеша, количество АЦП больше в 2раза

Вы невнимательно прочитали мой комментарий. Я говорил о любом китайском клоне, который будет стоить дешевле 20$ — это раз. Сдвиговые регистры доступны в DIP-корпусах (в т.ч. прямо здесь в магазине), что удобно для макетирования — это два.
Ну и использовать вторую мегу со своей прошивкой для расширения выводов — это пальба термоядерной боеголовкой по кишлаку, чтобы уничтожить одного террориста.
Не будьте столь категоричны, а то по-вашему выходит, что всегда нужно просто покупать железо пожирнее, и это будет лучшее решение всех проблем.

Кричать-то зачем? Код я написал один раз, а использовать его могут хоть 100500 человек по 10 раз. К чему спорить, если вы сами сказали, что кому-то это может пригодиться? Вам не пригодилось — ну и ладно, забудьте, что я писал эту статью (:

Кричать не буду, а покритиковать немного захотелось. Сам столкнулся с такой ситуацией, когда тупо не хватает портов. Тоже изучал расширители портов. А потом просто купил мегу и радости нет предела. Сейчас ваяю большой модуль где мозгом будет мега2560. Из постоянного подключения DS1307, ULN2803, DS18B20, матрица 32х16 двухцветная,SD карта шилд, кнопки и ИК приёмник. Из того что будет к ней подключаться как модули в случе гулянок -MSGEQ7, L293DNE (2моторчика с зеркалами для лазерного спирографа), и общение с RGB светильником на 27вт светодиодов работающих на атмеге8й(ардуино). И всё пойдет, нет даже полетит))) и портов хватит. Еще в планах сделать на 2х сервах поворотный механизм для светильника в двух осях. Из микросхем и оборудования всё есть, сейчас дорисовываю платки, код на 30%

Статья классная, Мне очень помогла в освоении домашней автоматики. Уважаемый, Burjui, есть ли у вас есть время, можете допилить LiquidCrystalRus под SPI. К сожалению, мои знания в программинге слабоваты.

Давно уж через SPI работает, просто свежие версии я выкладываю в репозиторий на GitHub. Последнюю версию всегда можете качнуть целиком, одним архивом .

Огромное спасибо! Ждем новых статей. Особенно про расширение выходов ШИМ. 🙂

Скачал последнюю версию LiquidCrystalRus и обнаружи, что она не работает с дисплеем 20х4.
Видно это из того, что 3ю строку начинает писать с 17 символа 1й строки. Код рабочий, работал с LiquidCrystalExt. Поправьте, если есть возможность.
Спасибо!

Не подскажите, что за программу использовали для создания столь красочной схемы?

Schematic, часть пакета DipTrace .

А нельзя ли схемку перезагрузить в PNG?
А то хотел распечатать, чтобы перед глазами была, но jpg все циферки съедает.

А зачем на пинах G, SCLR, SERR, CLK_INH использовали 100к подтяжку? По идее они то не нужны. Или, все же, есть причина?

Да щас «не нужны»! (:
SCLR вообще, когда в LOW, очищает содержимое сдвигового регистра, CLK_INH в LOW запрещает тактирование, а G в HIGH вообще запрещает вывод на ноги регистра. Если их оставить висящими в воздухе, регистр будет выдавать на ноги всякую хрень, ибо будет ловить наводки от сети 220 В.

Не adminЯ не про кинуть в воздух, а на питание и землю без резаков. Собственно, как и видел ранее. Просто тут впервые увидел про резаки, вот и интересен их смысл

А, это. Ну да, если входы высокоимпендансные, то можно и без резюков. Но я их таки влепил — для пущей надёжности.

Ну, тогда понятно 🙂

Адаптировать бы библиотеки под arduino 1.0

Сделано. Обновил ссылки на архивы в посте, чтобы указывали на архивы свежих версий на GitHub.

А графический дисплей 128х64 можно подключить через сдвиговые регистры?

Если найдёте подходящую библиотеку или сами модифицируете существующую. Я с графическими не работал.

А аналоговые выходы можно похожим образом расширить?

Для этого есть специальные микросхемы — мультиплексоры. Но я в этом не разбираюсь, спросите лучше Zoltberg’а .

Подскажите пожалуйста какой лучше выбрать для данной статьи и в чем между ними разница:
M74HC595B1
SN74HC595N
По datasheet вроде идентичны.

Так и есть — можно брать любую. Просто это базовая стандартная логика, и её выпускают все, кому не лень, хотя характеристики и идентичны.

Добрый день. Подскажите, пожалуйста, почему нельзя использовать общую линию SS при подключении 74*595 и 74*165 регистров? Или все-таки можно?

Продублирую ответ из лички, дабы остальные тоже могли просветиться:

Потому что 74HC165 всю малину портит тем, что использует SS не совсем по-SPIшному. В SPI принято выбирать устройство прижатием соответствующей ему линии SS к земле на время работы с ним, тогда как для 74HC165 нужно сначала дёрнуть SS вниз-вверх, а потом уже считывать данные.

(в общем-то, учитывая исключительную простоту устройства шины SPI, можно сказать, что 74HC165 не поддерживает SPI, а просто имеет общие с ней принципы работы)

burjui Громадное спасибо! Ваша статья очень многому научила!

SPI_Bus shreg(_16bit, 10); // каскад из двух сдвиговых регистров 74HC595
/* LCD подсоендинён к 74HC595, в качестве последнего аргумента указан вывод
* для управления подсветкой.
*/
LiquidCrystal lcd(5, 6, 7, 13, 14, 15, &shreg, 4);

Строчный и рядом блочный комментарии прочитал как одно целое). Смутила фраза «в качестве последнего аргумента указан вывод для управления подсветкой» — сначала подумал, что это относится к строке кода выше, где создается SPI_Bus. Минут пять думал, где подсветка у регистра пока не дошло, что это про 4-й пин, который передали в LiquidCrystal)

Доброго времени суток!
Скачал библиотек по ссылкам, водрузи в ардуину.
сделал инклюд… три раза, LineDriver, SPI, SPI_Bus
Жму компил… получаю

In file included from LCD5110_Scrolling_Text.pde:1:
C:ARDUINOlibrariesLiquidCrystalRus/LineDriver.h:9: error: stray ‘302’ in program
C:ARDUINOlibrariesLiquidCrystalRus/LineDriver.h:9: error: stray ‘267’ in program
C:ARDUINOlibrariesLiquidCrystalRus/LineDriver.h:9: error: stray ‘302’ in program
C:ARDUINOlibrariesLiquidCrystalRus/LineDriver.h:9: error: stray ‘267’ in program
In file included from LCD5110_Scrolling_Text.pde:1:
C:ARDUINOlibrariesLiquidCrystalRus/LineDriver.h:315:46: error: invalid suffix «c91d764c9a82611726495e8820e9e» on integer constant
C:ARDUINOlibrariesLiquidCrystalRus/LineDriver.h:316:62: error: invalid suffix «c91d764c9a82611726495e8820e9e» on integer constant
C:ARDUINOlibrariesLiquidCrystalRus/LineDriver.h:367:257: error: invalid suffix «x» on floating constant
C:ARDUINOlibrariesLiquidCrystalRus/LineDriver.h:401:110: error: invalid digit «9» in octal constant
C:ARDUINOlibrariesLiquidCrystalRus/LineDriver.h:501: error: stray ‘#’ in program
C:ARDUINOlibrariesLiquidCrystalRus/LineDriver.h:501: error: stray ‘#’ in program
C:ARDUINOlibrariesLiquidCrystalRus/LineDriver.h:501: error: stray ‘#’ in program
C:ARDUINOlibrariesLiquidCrystalRus/LineDriver.h:501: error: stray ‘#’ in program
In file included from C:Program FilesArduinolibrariesSPI_Bus/SPI_Bus.h:27,
from LCD5110_Scrolling_Text.pde:3:
C:ARDUINOlibrariesLiquidCrystalRus/LineDriver.h:9: error: stray ‘302’ in program
C:ARDUINOlibrariesLiquidCrystalRus/LineDriver.h:9: error: stray ‘267’ in program
C:ARDUINOlibrariesLiquidCrystalRus/LineDriver.h:9: error: stray ‘302’ in program
C:ARDUINOlibrariesLiquidCrystalRus/LineDriver.h:9: error: stray ‘267’ in program
In file included from C:Program FilesArduinolibrariesSPI_Bus/SPI_Bus.h:27,
from LCD5110_Scrolling_Text.pde:3:
C:ARDUINOlibrariesLiquidCrystalRus/LineDriver.h:315:46: error: invalid suffix «c91d764c9a82611726495e8820e9e» on integer constant
C:ARDUINOlibrariesLiquidCrystalRus/LineDriver.h:316:62: error: invalid suffix «c91d764c9a82611726495e8820e9e» on integer constant
C:ARDUINOlibrariesLiquidCrystalRus/LineDriver.h:367:257: error: invalid suffix «x» on floating constant
C:ARDUINOlibrariesLiquidCrystalRus/LineDriver.h:401:110: error: invalid digit «9» in octal constant
C:ARDUINOlibrariesLiquidCrystalRus/LineDriver.h:501: error: stray ‘#’ in program
C:ARDUINOlibrariesLiquidCrystalRus/LineDriver.h:501: error: stray ‘#’ in program
C:ARDUINOlibrariesLiquidCrystalRus/LineDriver.h:501: error: stray ‘#’ in program
C:ARDUINOlibrariesLiquidCrystalRus/LineDriver.h:501: error: stray ‘#’ in program
In file included from LCD5110_Scrolling_Text.pde:1:
C:ARDUINOlibrariesLiquidCrystalRus/LineDriver.h:4: error: expected unqualified-id before ‘

после некоторых манипуляций, остались вот эти ошибки

In file included from shreg_demo_2x.ino:3:
C:Program FilesArduinolibrariesSPI_Bus/SPI_Bus.h:46: error: expected class-name before ‘ <‘ token
C:Program FilesArduinolibrariesSPI_Bus/SPI_Bus.h:52: error: ‘LineDriver’ has not been declared
C:Program FilesArduinolibrariesSPI_Bus/SPI_Bus.h:56: error: ‘LineDriver’ has not been declared
C:Program FilesArduinolibrariesSPI_Bus/SPI_Bus.h:95: error: ISO C++ forbids declaration of ‘LineDriver’ with no type
C:Program FilesArduinolibrariesSPI_Bus/SPI_Bus.h:95: error: expected ‘;’ before ‘*’ token
C:Program FilesArduinolibrariesSPI_Bus/SPI_Bus.h:107: error: ‘LineDriver’ has not been declared

Помогите пожалуйста переделать библиотеку Stepper для работы шаговиками через сдвиговый регистр… Надо подключить 4 вот таких шаговика через 2 последовательных 74HC595.
У меня опыта работы с библиотеками совсем нет. Пытался сам разобраться, но не осилил.
Очень нужна помощь!

В целом эта статья почти единственная на эту тему я уже несколько недель шарю по интернету и нигде нечего не могу найти
в частности меня интересует подключение дисплея 1602 через сдвиговый регистр
решил попробовать почерпнуть чтонить от сюда но проблемы начались уже с момента старта компилятора он отругал за библиотеки заявив что они не могут так называться
дальше он до шел до строчки
SPI_Bus shreg_in(_8bit, 9); // сдвиговый регистр параллельной загрузки 74HC165
и все
подскажите пожалуйста в каком направлении решать проблему

Кто нибудь пробовал подключать через регистр дисплей Nokia 5110 LCD?
Помогите пожалуйста. Пробовал сам переписать библиотеку по примерам, не заработало((

Пытаюсь подключить много акселерометров к ардуино нано по spi. Сейчас подключено 4 датчика, данные собираются и отправляются в комп по serial. Начал подключать больше датчиков, началась дичь. Данные от уже подключенных датчиков становятся неправильными, появляется дребезг на данных. Это происходит именно при подключении самого провода sdo от пятого датчика. С шестью еще хуже становится. Датчики подключены через экранированный провод длиной 1 метр. Подскажите как исправить.

Добрый вам день.
Подскажите плиз глупому, никак не могу разобраться.
Мне надо к ардуинке подключить 1-n вводных сдвиговых регистров (на входах регистров будут кнопки) и 1-n выводных сдвиговых регистров. Регистры должны подключаться каскадом. Основная суть — при нажатии кнопки x должен загораться светодиод x. Помогите плиз чайнику схемкой соединения этого добра и желательно скетчом.

Здравствуйте. Подскажите пожалуйста, почему у меня все работает не так как надо)
Я подключил 2 микросхемы 74hc595, как у вас в статье и цепляю к ним LCD вот так:

Далее идет мой большой код) И в одном месте, я еще мигаю светодиодом, вот так:

И у меня вместе со светодиодом мигает подсветка экрана… Пробовал цеплять его на 10 ножку сдвигового региста, тогда кракозябры появляются на экране. Что может быть не так?

Убрал все 100КОм резисторы, и заработало нормально.

Только начинаю осваивать arduino, но уже столкнулся с необходимостью применения недорогого решения данной задачи.
Сейчас проект собран на Меге, но она очень большая. По размеру подходит Nano, но в ней очень мало выводов.

Правильно ли я понял, что для увеличения только цифровых входов и выходов нужно подключить лишь следующие библиотеки:

Сейчас стоит задача увеличить количество digital I/O c 14ти до 37ми.
25 из которых будут выходы и 12 входы.

Как надо изменить код обработки LOW на шести каналах при подключении одного сдвигового регистра и использовании библиотек из этой статьи?
Как выглядит код инициации выводов регистра, чтобы с ними можно было работать как с обычными цифровыми выходами?

Сейчас void loop выглядит следующим образом:

Понял в чем была ошибка, у Меги вывод ss на 53 контакте по умолчанию

Курим дальше…
С выводами на один регистр понятно
1. подключаем библиотеки

2. Инициализируем регистр

3. Переписываем все digitalWrite(переменая_цифрового_выхода_на_дуине, HIGH_или_LOW) следующим образом:

Подскажите что надо прописать при подключении трех регистров каскадом, как указать в скетче выходы второго и третьего регистра?

Добавить комментарий Отменить ответ

Для отправки комментария вам необходимо авторизоваться.

Источник

Понравилась статья? Поделить с друзьями:
  • Arderia коды ошибок котел
  • Arderia dsr 220r ошибка
  • Arderia b10 ошибка е3
  • Arctic cat z1 ошибка ecu 25
  • Arcnet communication error