Проблема с Global Variables
- Войдите на сайт для отправки комментариев
Пнд, 15/06/2015 - 19:50
Я решил управлять телевизором Samsung с Arduino UNO R3.
Прочитал на Хабре, что на самсунги нужно посылать коды RAW.
Компиляция с ошибками. Говрит "Global variables use 2 115 bytes (103%) of dynamic memory, leaving -67 bytes for local variables. Maximum is 2 048 bytes.", а в конце "Not enough memory; see http://www.arduino.cc/en/Guide/Troubleshooting#size for tips on reducing your footprint.".
Вот код:
#include <IRremote.h> IRsend irsend; unsigned long a; void setup() { Serial.begin(9600); Serial.setTimeout(4); pinMode(3, OUTPUT); } unsigned int one[78]={4450,4550,400,1800,450,650,450,1800,450,600,500,650,450,650,450,700,450,650,450,1750,450,650,500,1750,450,650,450,650,500,650,450,650,450,700,450,650,450,650,450,1750,450,650,500,650,450,650,500,650,450,650,450,1750,450,1750,500,650,450,1700,500,1750,450,1750,450,1800,450,1700,450}; unsigned int two[78]={4450,4550,450,1750,450,650,500,1750,500,600,450,650,450,650,500,650,450,650,500,1700,500,650,450,1800,450,600,500,650,450,650,450,650,500,650,450,1750,450,650,500,1750,450,650,450,650,450,700,450,650,450,650,450,700,450,1750,450,650,450,1700,500,1750,500,1750,450,1750,500,1650,500}; unsigned int three[78]={4450,4500,450,1750,450,700,450,1750,450,650,450,650,500,650,450,650,450,650,500,1750,450,650,450,1750,500,600,500,650,450,650,450,650,500,650,450,650,450,1750,500,1750,450,650,450,650,500,650,450,650,450,650,450,1750,500,650,450,650,500,1700,450,1800,450,1700,500,1750,500,1650,500}; unsigned int four[78]={4450,4550,450,1750,450,700,450,1750,450,650,450,650,500,650,450,650,450,650,500,1700,500,650,450,1750,500,600,500,650,450,650,450,650,500,650,450,650,450,650,500,650,450,1700,500,600,500,650,450,650,500,600,500,1750,450,1750,500,1750,450,600,500,1750,500,1700,500,1750,500,1650,500}; unsigned int five[78]={4450,4550,450,1750,450,650,500,1750,450,650,450,650,500,650,450,650,450,650,500,1750,450,650,450,1750,500,600,500,650,450,650,450,650,500,650,450,1750,450,650,500,650,450,1700,500,650,450,650,450,650,450,700,450,650,450,1750,500,1750,450,650,450,1750,500,1750,450,1750,500,1650,500}; unsigned int six[78]={4400,4550,450,1800,400,700,400,1800,450,650,450,700,400,700,450,650,450,650,500,1750,450,650,450,1750,500,600,500,650,450,650,450,700,400,700,450,650,450,1750,500,650,450,1700,500,650,450,650,450,700,400,700,450,1750,450,650,450,1800,450,650,450,1750,500,1750,450,1750,450,1700,500}; unsigned int seven[78]={4450,4550,450,1750,450,650,450,1800,450,650,450,650,450,650,500,650,450,650,450,1750,500,600,500,1750,500,600,500,600,500,650,450,650,500,600,500,650,450,650,500,1750,450,1700,500,600,500,650,450,650,450,650,500,1750,450,1750,500,600,500,650,450,1700,550,1700,500,1750,450,1700,500}; unsigned int eight[78]={4400,4550,450,1750,450,650,450,1800,450,650,450,650,450,700,400,650,500,650,450,1750,450,700,450,1750,500,600,450,700,450,650,450,650,450,700,450,1750,450,650,450,1800,450,1700,500,650,450,650,450,700,450,600,500,650,450,1750,500,650,450,650,450,1750,450,1800,400,1800,450,1700,450}; unsigned int nine[78]={4450,4500,450,1750,500,650,450,1800,450,600,450,650,500,650,450,650,450,700,450,1750,450,650,450,1800,450,650,450,650,450,650,500,600,500,650,450,650,500,1750,450,1750,500,1700,450,650,500,650,450,650,450,650,450,1800,450,650,450,650,450,650,450,1800,450,1750,450,1750,500,1650,500}; unsigned int zero[78]={4450,4500,500,1750,450,650,450,1800,450,650,450,650,450,650,500,650,450,650,450,1750,450,650,500,1750,500,600,450,650,500,650,450,650,450,650,500,1750,450,650,450,650,500,650,450,1750,450,650,450,650,500,650,450,650,450,1750,500,1750,450,1750,450,650,450,1750,500,1750,450,1700,450}; unsigned int on[78]={4450,4550,450,1750,450,650,450,1800,450,650,450,650,450,650,450,700,450,650,450,1750,450,700,450,1750,500,600,450,650,500,650,450,650,450,700,450,650,450,1750,450,650,450,700,450,650,450,650,500,650,450,650,450,1750,450,700,450,1750,450,1750,400,1800,450,1800,400,1800,450,1700,450}; void S1() {irsend.sendRaw(one,78,38);delay(500);} void S2() {irsend.sendRaw(two,78,38);delay(500);} void S3() {irsend.sendRaw(three,78,38);delay(500);} void S4() {irsend.sendRaw(four,78,38);delay(500);} void S5() {irsend.sendRaw(five,78,38);delay(500);} void S6() {irsend.sendRaw(six,78,38);delay(500);} void S7() {irsend.sendRaw(seven,78,38);delay(500);} void S8() {irsend.sendRaw(eight,78,38);delay(500);} void S9() {irsend.sendRaw(nine,78,38);delay(500);} void S0() {irsend.sendRaw(zero,78,38);delay(500);} void Son() {irsend.sendRaw(on,78,38);delay(500);} void loop() { a = Serial.parseInt(); if (a==101) {Son ();} if (a==1) {S1();} if (a==2) {S2();} if (a==3) {S3();} if (a==4) {S4();} if (a==5) {S5();} if (a==6) {S6();} if (a==7) {S7();} if (a==8) {S8();} if (a==9) {S9();} if (a==10) {S1();S0();}
И что вам не понятно из сообщения компилятора?
http://www.arduino.cc/en/Reference/PROGMEM
И что вам не понятно из сообщения компилятора?
http://www.arduino.cc/en/Reference/PROGMEM
Спасибо, почитаю
Arduino IDE зависает на этапе компиляции(
Вот текущее состояние кода:
И что вам не понятно из сообщения компилятора?
http://www.arduino.cc/en/Reference/PROGMEM
Спасибо, почитаю
Почитайте еще.
Похоже, всё исправил, НО этот код тоже вызывает зависание IDE((
Еще раз читайте, до конца, особенно ту часть где показывают как читать байты.
Еще раз читайте, до конца, особенно ту часть где показывают как читать байты.
Байты ? Ведь unsigned int - два байта.
"#include <avr/pgmspace.h>
// save some unsigned ints PROGMEM prog_uint16_t charSet[] = { 65000, 32796, 16843, 10, 11234}; unsigned int displayInt; int k = 0; // counter variable // read back a 2-byte int displayInt = pgm_read_word_near(charSet + k)"
Еще раз читайте, до конца, особенно ту часть где показывают как читать байты.
Байты ? Ведь unsigned int - два байта.
"#include <avr/pgmspace.h>
// save some unsigned ints PROGMEM prog_uint16_t charSet[] = { 65000, 32796, 16843, 10, 11234}; unsigned int displayInt; int k = 0; // counter variable // read back a 2-byte int displayInt = pgm_read_word_near(charSet + k)"
UDP: Да без разницы что читать, не хочет ТС правильно читать данные из флэша.