-
Ошибка выглядит так:
Arduino: 1.8.2 (Windows 8.1), Плата:»Arduino/Genuino Uno»C:UsersUserDocumentsArduinozvukzvuk.ino: In function ‘void loop()’:
zvuk:42: error: ‘lcd’ was not declared in this scope
lcd.backlight();
^
exit status 1
‘lcd’ was not declared in this scopeЭтот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
«Показать подробный вывод во время компиляции»скетч:
#include <Wire.h>boolean lcdon; // состояние лампы: true — включено, false — выключено
#include <LiquidCrystal_I2C.h> // подключаем библиотеку ЖКИ
#define printByte(args) write(args); //
int Value=0;
float Value_volt=0;void setup() // процедура setup
{
pinMode(12,OUTPUT); // пин 12 со светодиодом будет выходом (англ. «output»)
pinMode(A0,INPUT); // к аналоговому входу A0 подключим датчик (англ. «intput»)
lcdon=false; // начальное состояние — лампа выключена
Serial.begin(9600); // подключаем монитор порта
LiquidCrystal_I2C lcd(0x27,16,2); // Задаем адрес и размерность дисплея
lcd.init(); // Инициализация lcd
lcd.setCursor(0, 0); // Устанавливаем курсор в начало 1 строки}
void loop() // процедура loop
{
Serial.println (analogRead(A0)); // выводим значение датчика на монитор
if(analogRead(A0)>28) // регистрация хлопка на датчике звука{
lcdon=!lcdon; // меняем статус лампы при регистрации хлопка
Value = analogRead(A0);
lcd.backlight();
lcd.print (Value)delay(20); // задержка, «дребезга» хлопков
}
}
-
вынеси обьявление lcd из setup() наружу
-
переменные описанные в функции являются локальными и внутри другой функции не видны. lcd у тебя создаеца внутри функции setup(), соттвецтно loop() ничего про нее не знает.
-
пацкаска
int Value=0;
float Value_volt=0;
видны внутри обеих функций, а lcd — только унутре setup()дальше жувать?
-
ничего не изменилось
#include <Wire.h>
boolean lcdon; // состояние лампы: true — включено, false — выключено
#include <LiquidCrystal_I2C.h> // подключаем библиотеку ЖКИ
#define printByte(args) write(args); //
int Value=0;
float Value_volt=0;void setup() // процедура setup
{
pinMode(12,OUTPUT); // пин 12 со светодиодом будет выходом (англ. «output»)
pinMode(A0,INPUT); // к аналоговому входу A0 подключим датчик (англ. «intput»)
lcdon=false; // начальное состояние — лампа выключена
Serial.begin(9600); // подключаем монитор порта
LiquidCrystal_I2C lcd(0x27,16,2); // Задаем адрес и размерность дисплея
}
void loop() // процедура loop
{
Serial.println (analogRead(A0)); // выводим значение датчика на монитор
if(analogRead(A0)>28) // регистрация хлопка на датчике звука{
lcdon=!lcdon; // меняем статус лампы при регистрации хлопка
lcd.init(); // Инициализация lcd
lcd.setCursor(0, 0); // Устанавливаем курсор в начало 1 строкиValue = analogRead(A0);
lcd.backlight();
lcd.print (Value)delay(20); // задержка, «дребезга» хлопков
}
}
-
ничего не поменял — ничего и не изменилось.
и этта, код вставляй какследовает. -
перед setup вставлять lcd?
-
Именно к этому я тебя и веду
It’s telling me that «accelerometer» and «lcd» were not declared in this scope when they’re used in PIT0_IRQHandler. None of the solutions I’ve found online have worked as of yet so I figured I’d just post it up. I’m pretty new to this as well so feel free to point out any and every error included
#include <stdio.h>
#include "system.h"
#include "derivative.h"
#include "hardware.h"
#include "delay.h"
#include "lcd.h"
#include "i2c.h"
#include "level.h"
#include "mma845x.h"
#include "tone.h"
#include "accel.h"
/// LCD dimensions and centerpoint
#define LCD_WIDTH (LCD_X_MAX-LCD_X_MIN)
#define LCD_HEIGHT (LCD_Y_MAX-LCD_Y_MIN)
#define CENTRE_X ((LCD_X_MAX-LCD_X_MIN)/2)
#define CENTRE_Y ((LCD_Y_MAX-LCD_Y_MIN)/2)
#define BACKGROUND_COLOUR (RED)
#define FOREGROUND_COLOUR (WHITE)
#define CIRCLE_RADIUS (20)
using namespace USBDM;
void initialisePIT(int channel, uint32_t interval) {
// Enable clock to PIT
SIM->SCGC6 |= SIM_SCGC6_PIT_MASK;
// Enable PIT module
PIT->MCR = PIT_MCR_FRZ_MASK;
// Set reload value
PIT->CHANNEL[channel].LDVAL = interval-1;
// Enable this channel with interrupts
PIT->CHANNEL[channel].TCTRL = PIT_TCTRL_TEN_MASK|PIT_TCTRL_TIE_MASK;
// Enable PITn interrupts in NVIC
NVIC_EnableIRQ((IRQn_Type)(PIT0_IRQn+channel));
// Set arbitrary priority level
NVIC_SetPriority((IRQn_Type)(PIT0_IRQn+channel), 8);
}
void initialiseLCD(){
// Instantiate SPI interface class
Spi *spi = new Spi0();
// Instantiate LCD interface class
Lcd *lcd = new Lcd(spi);
// Clear Background and set to a preset (Set above) colour
lcd->clear(BACKGROUND_COLOUR);
// Draw crosshairs and initial circle on the screen
lcd->drawLine(LCD_WIDTH/2,LCD_WIDTH/2,0,LCD_HEIGHT,BLACK);
lcd->drawLine(0,LCD_WIDTH,LCD_HEIGHT/2,LCD_HEIGHT/2,BLACK);
lcd->drawCircle(CENTRE_X, CENTRE_Y, 20, WHITE);
}
void initialiseAccel()
{
I2c *i2c = new I2c0();
MMA845x *accelerometer = new MMA845x(i2c, MMA845x::ACCEL_2Gmode);
}
void PIT0_IRQHandler(void) {
int accelStatus;
int16_t accelX,accelY,accelZ;
accelerometer->readAccelerometerXYZ(&accelStatus, &accelX, &accelY, &accelZ);
lcd->clear(BACKGROUND_COLOUR);
lcd->drawCircle(accelX,accelY,20,WHITE);
// Clear the interrupt request from PIT
PIT->CHANNEL[0].TFLG = PIT_TFLG_TIF_MASK;
}
Hi there,
I’m currently building Prusa i3 rework and trying to get Marlin to compile.
I’m following these instructions [reprap.org] and have downloaded this already modified file [reprap.pt]
As is, this file compiles without problems.
I’m trying to install a RepRapDiscount Full Graphic Smart Controller as per [reprap.org]
I have U8glib installed.
If i enable this in configuration.h
#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
Compiling will fail with:
Arduino: 1.6.8 (Windows 7), Board: "Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)" sketchMarlin_main.cpp:2108:36: warning: invalid suffix on literal; C++11 requires a space between literal and identifier [-Wliteral-suffix] LCD_MESSAGEPGM(MACHINE_NAME" "MSG_OFF"."); ^ In file included from sketchdogm_lcd_implementation.h:40:0, from sketchultralcd.cpp:36: sketchultralcd_st7920_u8glib_rrd.h: In function 'uint8_t u8g_dev_rrd_st7920_128x64_fn(u8g_t*, u8g_dev_t*, uint8_t, void*)': sketchultralcd_st7920_u8glib_rrd.h:40:95: warning: large integer implicitly truncated to unsigned type [-Woverflow] #define ST7920_WRITE_BYTE(a) {ST7920_SWSPI_SND_8BIT((a)&0xf0);ST7920_SWSPI_SND_8BIT((a)<<4);u8g_10MicroDelay();} ^ sketchultralcd_st7920_u8glib_rrd.h:63:9: note: in expansion of macro 'ST7920_WRITE_BYTE' ST7920_WRITE_BYTE(0x3E); //extended mode + GDRAM active ^ sketchultralcd_st7920_u8glib_rrd.h:40:95: warning: large integer implicitly truncated to unsigned type [-Woverflow] #define ST7920_WRITE_BYTE(a) {ST7920_SWSPI_SND_8BIT((a)&0xf0);ST7920_SWSPI_SND_8BIT((a)<<4);u8g_10MicroDelay();} ^ sketchultralcd_st7920_u8glib_rrd.h:67:11: note: in expansion of macro 'ST7920_WRITE_BYTE' ST7920_WRITE_BYTE(0x80); //set x = 0 ^ sketchultralcd_st7920_u8glib_rrd.h:40:95: warning: large integer implicitly truncated to unsigned type [-Woverflow] #define ST7920_WRITE_BYTE(a) {ST7920_SWSPI_SND_8BIT((a)&0xf0);ST7920_SWSPI_SND_8BIT((a)<<4);u8g_10MicroDelay();} ^ sketchultralcd_st7920_u8glib_rrd.h:94:13: note: in expansion of macro 'ST7920_WRITE_BYTE' ST7920_WRITE_BYTE(0x80); //x=0 ^ sketchultralcd_st7920_u8glib_rrd.h:40:95: warning: large integer implicitly truncated to unsigned type [-Woverflow] #define ST7920_WRITE_BYTE(a) {ST7920_SWSPI_SND_8BIT((a)&0xf0);ST7920_SWSPI_SND_8BIT((a)<<4);u8g_10MicroDelay();} ^ sketchultralcd_st7920_u8glib_rrd.h:99:13: note: in expansion of macro 'ST7920_WRITE_BYTE' ST7920_WRITE_BYTE(0x80 | 8); //x=64 ^ sketchultralcd.cpp: In function 'void config_lcd_level_bed()': ultralcd.cpp:758: error: 'lcd' was not declared in this scope lcd.clear(); ^ sketchultralcd.cpp: In function 'void lcd_level_bed_cooling()': ultralcd.cpp:769: error: 'lcd' was not declared in this scope lcd.setCursor(0, 0); ^ ultralcd.cpp:791: error: 'lcd' was not declared in this scope lcd.clear(); ^ sketchultralcd.cpp: In function 'void lcd_level_bed()': ultralcd.cpp:800: error: 'lcd' was not declared in this scope lcd.clear(); ^ sketchultralcd.cpp: In function 'void lcd_load_material_extrud_1()': ultralcd.cpp:944: error: 'lcd' was not declared in this scope lcd.setCursor(3, 2); ^ sketchultralcd.cpp: In function 'void lcd_unload_material_extrud_1()': ultralcd.cpp:990: error: 'lcd' was not declared in this scope lcd.setCursor(3, 2); ^ sketchultralcd.cpp: In function 'void lcd_init()': ultralcd.cpp:1418: error: 'lcd' was not declared in this scope lcd.clear(); ^ exit status 1 'lcd' was not declared in this scope This report would have more information with "Show verbose output during compilation" option enabled in File -> Preferences.
Any ideas?
Edited 1 time(s). Last edit at 05/04/2016 09:51AM by Veesta.