ADXL345 не хочет нормально работать (что-то с библиотекой)

RVE

✩✩✩✩✩✩✩
19 Окт 2020
11
0
Суть скетча в том, что он заставляет мигать задний фонарь (адресная лента с 8-ю диодами) и заставляет менять цвет ленты RGB с зеленого на красный при торможении велосипеда, те акселерометр замечает замедление и если оно сильное, то он еще и помигает задней фарой. Проблема в том, что компилятор ругается на переменную из библиотеки, которая содержит значение ускорения по каждой оси. Кстати адрес по i2c 0x53, его я в библиотеке поставил. Если поможете и оно заработет, то скину на сбер 50 рубасов.

Вроде скетч делал по примеру из демо-кода, но не компилируется
C++:
#include <Wire.h>
uint32_t redTimer; //таймер
#define LED_PIN 9       // пин ленты
#define NUMLEDS 8       // кол-во светодиодов

#define ORDER_GRB
#define COLOR_DEBTH 1
#include <microLED.h>
LEDdata leds[NUMLEDS];  // буфер ленты типа LEDdata (размер зависит от COLOR_DEBTH)
microLED strip(leds, NUMLEDS, LED_PIN);  // объект лента
bool redLed; //флаг стопа
int frontLed; //яркость фонаря переднего
int frontLed_pin = 9; //пин транзистора фары
bool light; //флаг освещения
int redStrip_pin = 8; //пин красной ленты
int greenStrip_pin = 7; //пин зеленой ленты
int greenStrip_flag; //флаг зеленой ленты
int redStrip_flag; //флаг красной ленты
bool power_flag = 1; //питане вкл/выкл
int stop_reaction = -3; //порог замедления для фонаря заднего
int stop_reaction_warning = -7 //порог экстренного замедления для фонаря заднего

#include <Adafruit_Sensor.h>  //adxl345
#include <Adafruit_ADXL345_U.h>
Adafruit_ADXL345_Unified accel = Adafruit_ADXL345_Unified(12345);

void redLed_blink(void) {//мигалка
  if (millis() - redTimer >= 150) {   // ищем разницу (150 мс)             
  redLed = !redLed; //ивертируем флаг включения
      redTimer = millis();  // сброс таймера
 }
}
void redLed_blink_warning(void) {//мигалка очень быстрая
  if (millis() - redTimer >= 50) {   // ищем разницу (150 мс)             
  redLed = !redLed; //ивертируем флаг включения
      redTimer = millis();  // сброс таймера
 }
}
void redLed_stop(void){
  redLed = 1;//свечение
}
void redLed_off(){
  strip.clear();
  strip.show(); //выключенно
}
void redStrip_stop(void) {//функция красного свечения лентой
  redStrip_flag == 1;
}
void redStrip_off(void) {//функция выключеня красного свечения лентой
  redStrip_flag == 0;
}
void greenStrip_on(void) {//функция зеленого свечения лентой
  greenStrip_flag == 1;
}
void greenStrip_off(void) {//функция выключения зеленого свечения лентой
  greenStrip_flag == 0;
}
void redStrip_switcher(void) {//функция переключения красного свечения лентой
  if(redStrip_flag == 1) {         //если 1
    digitalWrite(redStrip_pin, HIGH); //включен красный
  }
  else{   //иначе выключить
    digitalWrite(redStrip_pin, LOW);
  }
}
void greenStrip_switcher(void) {//функция переключения зеленого свечения лентой
  if(greenStrip_flag == 1) {         //если 1
    digitalWrite(greenStrip_pin, HIGH); //включен зеленый
  }
  else{   //иначе выключить
    digitalWrite(greenStrip_pin, LOW);
  }
}
void redLed_checker() { //проверка флага redLed
  if(redLed == true) {         //если 1
    strip.setBrightness(200);
    strip.fill(mCOLOR(RED));
    strip.show();  //печать в сериал о том что включенно
  }
  else{   //иначе выключить
    strip.clear();
    strip.show(); //выключенно
  }
} //переключатель света
void accelerometer_led() { //функция для переключения режима мигалки в зависимости от ускорения
  if (event.acceleration.y <= stop_reaction){  //условие для проверки торможения
    redLed_stop(); //свечение простое
    redStrip_stop();
    greenStrip_on();//включена зеленая лента
    }
    else if(event.acceleration.y <= stop_reaction_warning){ //условие для проверки экстренного торможения
    redLed_blink_warning(); //стробоскоп
    redStrip_stop();//включена красная лента
    greenStrip_off();//выключена зеленая лента
    }
    else if(event.acceleration.y > stop_reaction && light == 1){ //условие для обычного мигания при включенном освещении
    redLed_blink(); //обычное мигание
    greenStrip_on();//включена зеленая лента
    }
    else{ //иначе выключен
    redLed_off(); //выключен
    redStrip_off();//выключена красная лента
    greenStrip_off();//выключена зеленая лента
    }
  } //переключатель света от акселлерометра
void frontLed_switcher() {
  digitalWrite(frontLed_pin, frontLed); //функция для смены яркости фары в зависимости от переменной fontLed
}
void power_switcher() { //флаг переключения питания
  if(power_flag == 1) {         //если 1
   power_on(); //питание включено
  }
  else{   //иначе выключить
    power_off();
  }
}
void power_on() { //питание включено
   //запуск функций
   redStrip_switcher();//переключение свечения красной ленты
   greenStrip_switcher();//переключение свечения зеленой ленты
   frontLed_switcher(); //функция для смены яркости фары
   redLed_checker(); //проверка флага redLed
   accelerometer_led();//функция для переключения режима задней мигалки в зависимости от ускорения
   sensors_event_t event; //обновление датчика adxl345
   accel.getEvent(&event);//обновление датчика adxl345
}
void power_off() {
  power_on();
  light == 0; //выключение освещения
}
void setup() {
  accel.setRange(ADXL345_RANGE_16_G); //настройка adxl345
}

void loop() {
    power_switcher();
}
Так же имеется простецкий скетч, который компилируется и даже когда-то работал, но сейчас выдает -0.04 по каждой оси
делал по примеру и для проверки
C++:
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_ADXL345_U.h>
unsigned long currentTime;   // переменная времени
boolean ledState = 0;       // переменная состояния светодиода
const int ledPin = 13;
const int ledPin1 = 3;
const int stopled = -3;
const int stopled2 = -7;
int stepdelay1 = 100;
Adafruit_ADXL345_Unified accel = Adafruit_ADXL345_Unified(12345);
void setup() {
  digitalWrite(ledPin, HIGH);
  #ifndef ESP8266
  while (!Serial); // for Leonardo/Micro/Zero
  #endif
  Serial.begin(9600);
  Serial.println("Accelerometer Test"); Serial.println("");
  pinMode(ledPin, OUTPUT);
  pinMode(ledPin1, OUTPUT);
  accel.setRange(ADXL345_RANGE_16_G);
}

void loop() {
  // put your main code here, to run repeatedly:
  sensors_event_t event;
  accel.getEvent(&event);
  Serial.print("X: "); Serial.print(event.acceleration.x); Serial.print("  ");
  Serial.print("Y: "); Serial.print(event.acceleration.y); Serial.print("  ");
  Serial.print("Z: "); Serial.print(event.acceleration.z); Serial.print("  ");Serial.println("m/s^2 ");
  delay(0);

 
 
  if (event.acceleration.y <= stopled){
            digitalWrite(ledPin, LOW);
            delay(100);
            digitalWrite(ledPin, HIGH);
              if (event.acceleration.y >= stopled2){
                
              digitalWrite(ledPin, LOW);
              delay(50);
              digitalWrite(ledPin, HIGH);
              delay(30);
              digitalWrite(ledPin, LOW);
              delay(50);
              digitalWrite(ledPin, HIGH);
              delay(30);
              digitalWrite(ledPin, LOW);
              delay(50);
              digitalWrite(ledPin, HIGH);
              delay(30);
              digitalWrite(ledPin, LOW);
              delay(50);
              digitalWrite(ledPin, HIGH);
              delay(30);
              digitalWrite(ledPin, LOW);
              delay(50);
              digitalWrite(ledPin, HIGH);
              delay(30);
              digitalWrite(ledPin, LOW);
              delay(100);
              digitalWrite(ledPin, HIGH);
              delay(30);
              
             } else {
              digitalWrite(ledPin, HIGH);
             }
         } else {
         digitalWrite(ledPin, HIGH);
        
       }
}
А так же есть пример из библиотеки, котрый нормально работает и компилируется.

C++:
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_ADXL345_U.h>

/* Assign a unique ID to this sensor at the same time */
Adafruit_ADXL345_Unified accel = Adafruit_ADXL345_Unified(12345);

void displaySensorDetails(void)
{
  sensor_t sensor;
  accel.getSensor(&sensor);
  Serial.println("------------------------------------");
  Serial.print  ("Sensor:       "); Serial.println(sensor.name);
  Serial.print  ("Driver Ver:   "); Serial.println(sensor.version);
  Serial.print  ("Unique ID:    "); Serial.println(sensor.sensor_id);
  Serial.print  ("Max Value:    "); Serial.print(sensor.max_value); Serial.println(" m/s^2");
  Serial.print  ("Min Value:    "); Serial.print(sensor.min_value); Serial.println(" m/s^2");
  Serial.print  ("Resolution:   "); Serial.print(sensor.resolution); Serial.println(" m/s^2"); 
  Serial.println("------------------------------------");
  Serial.println("");
  delay(500);
}

void displayDataRate(void)
{
  Serial.print  ("Data Rate:    ");
 
  switch(accel.getDataRate())
  {
    case ADXL345_DATARATE_3200_HZ:
      Serial.print  ("3200 ");
      break;
    case ADXL345_DATARATE_1600_HZ:
      Serial.print  ("1600 ");
      break;
    case ADXL345_DATARATE_800_HZ:
      Serial.print  ("800 ");
      break;
    case ADXL345_DATARATE_400_HZ:
      Serial.print  ("400 ");
      break;
    case ADXL345_DATARATE_200_HZ:
      Serial.print  ("200 ");
      break;
    case ADXL345_DATARATE_100_HZ:
      Serial.print  ("100 ");
      break;
    case ADXL345_DATARATE_50_HZ:
      Serial.print  ("50 ");
      break;
    case ADXL345_DATARATE_25_HZ:
      Serial.print  ("25 ");
      break;
    case ADXL345_DATARATE_12_5_HZ:
      Serial.print  ("12.5 ");
      break;
    case ADXL345_DATARATE_6_25HZ:
      Serial.print  ("6.25 ");
      break;
    case ADXL345_DATARATE_3_13_HZ:
      Serial.print  ("3.13 ");
      break;
    case ADXL345_DATARATE_1_56_HZ:
      Serial.print  ("1.56 ");
      break;
    case ADXL345_DATARATE_0_78_HZ:
      Serial.print  ("0.78 ");
      break;
    case ADXL345_DATARATE_0_39_HZ:
      Serial.print  ("0.39 ");
      break;
    case ADXL345_DATARATE_0_20_HZ:
      Serial.print  ("0.20 ");
      break;
    case ADXL345_DATARATE_0_10_HZ:
      Serial.print  ("0.10 ");
      break;
    default:
      Serial.print  ("???? ");
      break;
  } 
  Serial.println(" Hz"); 
}

void displayRange(void)
{
  Serial.print  ("Range:         +/- ");
 
  switch(accel.getRange())
  {
    case ADXL345_RANGE_16_G:
      Serial.print  ("16 ");
      break;
    case ADXL345_RANGE_8_G:
      Serial.print  ("8 ");
      break;
    case ADXL345_RANGE_4_G:
      Serial.print  ("4 ");
      break;
    case ADXL345_RANGE_2_G:
      Serial.print  ("2 ");
      break;
    default:
      Serial.print  ("?? ");
      break;
  } 
  Serial.println(" g"); 
}

void setup(void)
{
#ifndef ESP8266
  while (!Serial); // for Leonardo/Micro/Zero
#endif
  Serial.begin(9600);
  Serial.println("Accelerometer Test"); Serial.println("");
 
  /* Initialise the sensor */
  if(!accel.begin())
  {
    /* There was a problem detecting the ADXL345 ... check your connections */
    Serial.println("Ooops, no ADXL345 detected ... Check your wiring!");
    while(1);
  }

  /* Set the range to whatever is appropriate for your project */
  accel.setRange(ADXL345_RANGE_16_G);
  // accel.setRange(ADXL345_RANGE_8_G);
  // accel.setRange(ADXL345_RANGE_4_G);
  // accel.setRange(ADXL345_RANGE_2_G);
 
  /* Display some basic information on this sensor */
  displaySensorDetails();
 
  /* Display additional settings (outside the scope of sensor_t) */
  displayDataRate();
  displayRange();
  Serial.println("");
}

void loop(void)
{
  /* Get a new sensor event */
  sensors_event_t event;
  accel.getEvent(&event);
 
  /* Display the results (acceleration is measured in m/s^2) */
  Serial.print("X: "); Serial.print(event.acceleration.x); Serial.print("  ");
  Serial.print("Y: "); Serial.print(event.acceleration.y); Serial.print("  ");
  Serial.print("Z: "); Serial.print(event.acceleration.z); Serial.print("  ");Serial.println("m/s^2 ");
  delay(500);
}
 

bort707

★★★★★★✩
21 Сен 2020
3,067
916
Вроде скетч делал по примеру из демо-кода, но не компилируется
Когда "не компилируется" - то компилятор обычно пишет, в чем проблема. Выкладывайте сообщение об ошибке (только не скриншот, а текстом)
 

bort707

★★★★★★✩
21 Сен 2020
3,067
916
А переменную event кто будет определять за тебя ? Если сам, то 50р, если я то 100р
определена она у него, в строке 124 :)

@RVE - если вы не понимаете, как работают переменные в Си - не спешите делить код на процедуры, так у вас ничего работать не будет....
 
  • Лойс +1
Реакции: RVE

RVE

✩✩✩✩✩✩✩
19 Окт 2020
11
0
А переменную event кто будет определять за тебя ? Если сам, то 50р, если я то 100р
насколько я помню, но в своем простецком скетче я никаких event не объявлял и все работало. Но в принципе если ты весь скетч поправишь и он заработает, то 100 я готов пожертвовать)

/home/builder/opt/arduino-builder/arduino-builder -compile -core-api-version 10611 -hardware /home/builder/opt/arduino-builder/hardware -hardware /home/builder/.arduino15/packages -tools /home/builder/opt/arduino-builder/tools -tools /home/builder/.arduino15/packages -built-in-libraries /home/builder/opt/libraries/latest -logger humantags -fqbn arduino:avr:mega:cpu=atmega2560 -build-cache /tmp -build-path /tmp/112188005/build -verbose -prefs runtime.tools.arduinoOTA.path=/home/builder/.arduino15/packages/arduino/tools/arduinoOTA/1.3.0 -prefs runtime.tools.avr-gcc.path=/home/builder/.arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino5 -prefs runtime.tools.avrdude.path=/home/builder/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino17 -prefs runtime.tools.sketchUploader.path=/home/builder/.arduino15/packages/Intel/tools/sketchUploader/1.6.2+1.0 -prefs runtime.tools.CMSIS.path=/home/builder/.arduino15/packages/arduino/tools/CMSIS/4.5.0 -prefs runtime.tools.CMSIS-Atmel.path=/home/builder/.arduino15/packages/arduino/tools/CMSIS-Atmel/1.2.0 -prefs runtime.tools.i586-poky-linux-uclibc.path=/home/builder/.arduino15/packages/Intel/tools/i586-poky-linux-uclibc/1.6.2+1.0 -prefs runtime.tools.xtensa-lx106-elf-gcc.path=/home/builder/.arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-3-20ed2b9 -prefs runtime.tools.core2-32-poky-linux.path=/home/builder/.arduino15/packages/Intel/tools/core2-32-poky-linux/1.6.2+1.0 -prefs runtime.tools.openocd.path=/home/builder/.arduino15/packages/Intel/tools/openocd/0.9.0+0.1 -prefs runtime.tools.esptool.path=/home/builder/.arduino15/packages/esp8266/tools/esptool/2.5.0-3-20ed2b9 -prefs runtime.tools.mkspiffs.path=/home/builder/.arduino15/packages/esp8266/tools/mkspiffs/2.5.0-3-20ed2b9 -prefs runtime.tools.linuxuploader.path=/home/builder/.arduino15/packages/arduino/tools/linuxuploader/1.5.1 -prefs runtime.tools.nrf5x-cl-tools.path=/home/builder/.arduino15/packages/arduino/tools/nrf5x-cl-tools/9.3.1 -prefs runtime.tools.arduino101load.path=/home/builder/.arduino15/packages/Intel/tools/arduino101load/2.0.1 -prefs runtime.tools.flashpack.path=/home/builder/.arduino15/packages/Intel/tools/flashpack/2.0.0 -prefs runtime.tools.dfu-util.path=/home/builder/.arduino15/packages/arduino/tools/dfu-util/0.9.0-arduino2 -prefs runtime.tools.x86-linux-gcc.path=/home/builder/.arduino15/packages/arduino/tools/x86-linux-gcc/7.2.0 -prefs runtime.tools.arm-none-eabi-gcc.path=/home/builder/.arduino15/packages/arduino/tools/arm-none-eabi-gcc/7-2017q4 -prefs runtime.tools.arc-elf32.path=/home/builder/.arduino15/packages/Intel/tools/arc-elf32/1.6.9+1.0.1 -prefs runtime.tools.bossac.path=/home/builder/.arduino15/packages/industruino/tools/bossac/1.7.0-industruino -prefs runtime.tools.arm-linux-gcc.path=/home/builder/.arduino15/packages/arduino/tools/arm-linux-gcc/4.9.3 -libraries /tmp/112188005/custom -libraries /tmp/112188005/pinned /tmp/112188005/solved_stopLed_normalniy

Multiple libraries were found for "Adafruit_Sensor.h"

Used: /home/builder/opt/libraries/latest/adafruit_unified_sensor_1_1_4

Not used: /home/builder/opt/libraries/latest/arduav_1_4_2

Using library adafruit_unified_sensor_1_1_4 at version 1.1.4 in folder: /home/builder/opt/libraries/latest/adafruit_unified_sensor_1_1_4

Using library adafruit_adxl345_1_2_2 at version 1.2.2 in folder: /home/builder/opt/libraries/latest/adafruit_adxl345_1_2_2

/tmp/112188005/solved_stopLed_normalniy/solved_stopLed_normalniy.ino: In function 'void accelerometer_led()':

/tmp/112188005/solved_stopLed_normalniy/solved_stopLed_normalniy.ino:90:7: error: 'event' was not declared in this scope

if (event.acceleration.y <= stop_reaction){ //условие для проверки торможения

^~~~~

exit status 1
 

bort707

★★★★★★✩
21 Сен 2020
3,067
916
error: 'event' was not declared in this scope
ну все верно - @Старик Похабыч правильно догадался

Причина ошибки в том, что вы поделили код на кучу процедур, не понимая как это правильно делается. Тут исправлением одной этой переменной не обойтись.
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,272
1,303
Москва
Ок. Вот, теперь компилируется. Логику проверяй сам. В личку скинул "реквизиты"

C++:
#include <Wire.h>
uint32_t redTimer; //таймер
#define LED_PIN 9       // пин ленты
#define NUMLEDS 8       // кол-во светодиодов

#define ORDER_GRB
#define COLOR_DEBTH 1
#include <microLED.h>
LEDdata leds[NUMLEDS];  // буфер ленты типа LEDdata (размер зависит от COLOR_DEBTH)
microLED strip(leds, NUMLEDS, LED_PIN);  // объект лента
bool redLed; //флаг стопа
int frontLed; //яркость фонаря переднего
int frontLed_pin = 9; //пин транзистора фары
bool light; //флаг освещения
int redStrip_pin = 8; //пин красной ленты
int greenStrip_pin = 7; //пин зеленой ленты
int greenStrip_flag; //флаг зеленой ленты
int redStrip_flag; //флаг красной ленты
bool power_flag = 1; //питане вкл/выкл
int stop_reaction = -3; //порог замедления для фонаря заднего
int stop_reaction_warning = -7; //порог экстренного замедления для фонаря заднего

#include <Adafruit_Sensor.h>  //adxl345
#include <Adafruit_ADXL345_U.h>
Adafruit_ADXL345_Unified accel = Adafruit_ADXL345_Unified(12345);
sensors_event_t event; //обновление датчика adxl345

void redLed_blink(void) {//мигалка
  if (millis() - redTimer >= 150) {   // ищем разницу (150 мс)             
  redLed = !redLed; //ивертируем флаг включения
      redTimer = millis();  // сброс таймера
 }
}
void redLed_blink_warning(void) {//мигалка очень быстрая
  if (millis() - redTimer >= 50) {   // ищем разницу (150 мс)             
  redLed = !redLed; //ивертируем флаг включения
      redTimer = millis();  // сброс таймера
 }
}
void redLed_stop(void){
  redLed = 1;//свечение
}
void redLed_off(){
  strip.clear();
  strip.show(); //выключенно
}
void redStrip_stop(void) {//функция красного свечения лентой
  redStrip_flag == 1;
}
void redStrip_off(void) {//функция выключеня красного свечения лентой
  redStrip_flag == 0;
}
void greenStrip_on(void) {//функция зеленого свечения лентой
  greenStrip_flag == 1;
}
void greenStrip_off(void) {//функция выключения зеленого свечения лентой
  greenStrip_flag == 0;
}
void redStrip_switcher(void) {//функция переключения красного свечения лентой
  if(redStrip_flag == 1) {         //если 1
    digitalWrite(redStrip_pin, HIGH); //включен красный
  }
  else{   //иначе выключить
    digitalWrite(redStrip_pin, LOW);
  }
}
void greenStrip_switcher(void) {//функция переключения зеленого свечения лентой
  if(greenStrip_flag == 1) {         //если 1
    digitalWrite(greenStrip_pin, HIGH); //включен зеленый
  }
  else{   //иначе выключить
    digitalWrite(greenStrip_pin, LOW);
  }
}
void redLed_checker() { //проверка флага redLed
  if(redLed == true) {         //если 1
    strip.setBrightness(200);
    strip.fill(mCOLOR(RED));
    strip.show();  //печать в сериал о том что включенно
  }
  else{   //иначе выключить
    strip.clear();
    strip.show(); //выключенно
  }
} //переключатель света
void accelerometer_led() { //функция для переключения режима мигалки в зависимости от ускорения
  if (event.acceleration.y <= stop_reaction){  //условие для проверки торможения
    redLed_stop(); //свечение простое
    redStrip_stop();
    greenStrip_on();//включена зеленая лента
    }
    else if(event.acceleration.y <= stop_reaction_warning){ //условие для проверки экстренного торможения
    redLed_blink_warning(); //стробоскоп
    redStrip_stop();//включена красная лента
    greenStrip_off();//выключена зеленая лента
    }
    else if(event.acceleration.y > stop_reaction && light == 1){ //условие для обычного мигания при включенном освещении
    redLed_blink(); //обычное мигание
    greenStrip_on();//включена зеленая лента
    }
    else{ //иначе выключен
    redLed_off(); //выключен
    redStrip_off();//выключена красная лента
    greenStrip_off();//выключена зеленая лента
    }
  } //переключатель света от акселлерометра
void frontLed_switcher() {
  digitalWrite(frontLed_pin, frontLed); //функция для смены яркости фары в зависимости от переменной fontLed
}
void power_switcher() { //флаг переключения питания
  if(power_flag == 1) {         //если 1
   power_on(); //питание включено
  }
  else{   //иначе выключить
    power_off();
  }
}
void power_on() { //питание включено
   //запуск функций
   redStrip_switcher();//переключение свечения красной ленты
   greenStrip_switcher();//переключение свечения зеленой ленты
   frontLed_switcher(); //функция для смены яркости фары
   redLed_checker(); //проверка флага redLed
   accelerometer_led();//функция для переключения режима задней мигалки в зависимости от ускорения   
   accel.getEvent(&event);//обновление датчика adxl345
}
void power_off() {
  power_on();
  light == 0; //выключение освещения
}
void setup() {
  accel.setRange(ADXL345_RANGE_16_G); //настройка adxl345
}

void loop() {
    power_switcher();
}
 

RVE

✩✩✩✩✩✩✩
19 Окт 2020
11
0
ну все верно - @Старик Похабыч правильно догадался

Причина ошибки в том, что вы поделили код на кучу процедур, не понимая как это правильно делается. Тут исправлением одной этой переменной не обойтись.
то есть мне нужно как-то будет начат переделывать все под структуры? А как же обращаться к данным которые дает библиотека?
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,272
1,303
Москва
Я тебе сделал переменную глобальной, она стала доступна во всех функциях ниже ее объявления.
И еще в 21-ой строке у тебя не было ; ну и дальше непонятная ругань на библиотеки из за этого
 
  • Лойс +1
Реакции: RVE

RVE

✩✩✩✩✩✩✩
19 Окт 2020
11
0
Я тебе сделал переменную глобальной, она стала доступна во всех функциях ниже ее объявления.
И еще в 21-ой строке у тебя не было ; ну и дальше непонятная ругань на библиотеки из за этого
единственная проблема, которая осталась - почему все-таки adxl345 выдает все время -0.04? в демо-коде все работает, а тут тупо -0.04
 

RVE

✩✩✩✩✩✩✩
19 Окт 2020
11
0
Есть погрешность. 0 может сммещен на эти 0.04
тут скорее всего какая-то штука пропущена и наверное он по этому не обновляется. Просто в примере там все четко

Есть погрешность. 0 может сммещен на эти 0.04
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,272
1,303
Москва
Все события акселерометра записываются в переменную event
Обновляется она в строке 125
accel.getEvent(&event);//обновление датчика adxl345
И не вижу где у тебя accel.begin())
 
Изменено:
  • Лойс +1
Реакции: RVE

Fleshdeck

★★★✩✩✩✩
19 Янв 2019
349
176
Киев
для отслеживания торможения лучше бы взял гироскоп и акселерометр, MPU6050
 

RVE

✩✩✩✩✩✩✩
19 Окт 2020
11
0
для отслеживания торможения лучше бы взял гироскоп и акселерометр, MPU6050
а смысл мне наклон знать? я же в лбом случае пойму когда замедляюсь... Или реально в этом проекте есть смысл от гироскопа?
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,272
1,303
Москва
Для велосипеда наклон вперед и назад будет небольшой. влево-вправо больше. Если пошло вращение, то ппц. котенку...