Нужна помощь в программировании.

rinox
Offline
Зарегистрирован: 08.04.2019

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



Сам прибор представляет из себя arduino nano на CH340g и модуля MPU6050. Цель - закрепить всё в корпусе ракеты, запустить и потом построить график ускорения.

От знакомого, который делал практически такую же работу достался скетч, но, к сожалению, сам я разобраться не могу и поэтому прошу помощи здесь.





Сам скетч:

#include "Wire.h"
#include "I2Cdev.h"
#include "MPU6050.h"
#include "EEPROM.h"

MPU6050 accelgyro;

int16_t ax, ay, az;
int16_t gx, gy, gz;
int p;
int i;
int switchPin=8;
int ledPin=13;
int hi;
int low;

void setup() {
pinMode(switchPin,INPUT);
pinMode(switchPin,OUTPUT);
Serial.begin(9600);
accelgyro.initialize();
delay(1000);   //замедление
}

void loop() {
i=0;
p=0;
do{
  if(digitalRead(switchPin)==HIGH)
    {
    digitalWrite(ledPin, HIGH);
    Serial.println("eee");
     p=0;
     do{
       accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
       az=int(az)+18350; // число > 255 разбиваем на 2 байта (макс. 65536)
        byte hi = highByte(az); // старший байт
        byte low = lowByte(az); // младший байт
        EEPROM.write(p, hi);  // записываем в ячейку 1 старший байт
        p=p+1;
        EEPROM.write(p, low); // записываем в ячейку 2 младший байт
        p=p+1;
        delay(200);
       }while(p<1024);
       p=0;
       i=0;
      }
   else
   {
    digitalWrite(ledPin, LOW);
    hi=EEPROM.read(p);
    p=p+1;
    low=EEPROM.read(p);
    int n = word(hi, low);
    n=n-18350;
    Serial.print(i);
    Serial.print("\t");
    Serial.println(n);
    p=p+1;
    i=i+1;
   }
}while(p<1024);
}

 

 

Также не знаю, как запустить программу отдельно от компьютера при питании от кроны.

Собственно весь вопрос в том, как начать запись показаний и как потом их снять.

 

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Как работает - понятно. Когда на пине 8 высокий уровень включается светодиодик и каждые 0,2 секунды записываются показания. Когда на пине 8 низкий уровень выключается светодиодик и данные из EEPROM гонятся на серийный порт.

Начать запись - высоком уровене при пине 8 включить питание, считать при низком уровне с серийного порта. Как запитать от кроны? Наверное сделав из 9В 5В, например КРЕНкой.

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

mykaida пишет:

 Как запитать от кроны? Наверное сделав из 9В 5В, например КРЕНкой.

а в VIn сразу не проще ?

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

xDriver пишет:

а в VIn сразу не проще ?

Просто с нано не имел дело, поэтому предположил отсутствие встроенной.

А вообще - зачем там нужна крона? Можно литиевый элемент использовать на 3,3В или я не прав?

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

mykaida пишет:

xDriver пишет:

а в VIn сразу не проще ?

Просто с нано не имел дело, поэтому предположил отсутствие встроенной.

А вообще - зачем там нужна крона? Можно литиевый элемент использовать на 3,3В или я не прав?

правы, тока нана от 3.3 не заработает, да и нана там не нужна. уж коль ракета, значит борьба за вес

про мини 168 на 3.3в и литий.

 

но, все сделано до нас и о какой помощи просит ТС непонятно.

rinox
Offline
Зарегистрирован: 08.04.2019

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

rinox
Offline
Зарегистрирован: 08.04.2019

К сожалению, что для вас ясно как пять пальцев, для меня не так просто.
Можно использовать батарею на 5v и не напрягаться?

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

rinox пишет:
К сожалению, что для вас ясно как пять пальцев, для меня не так просто. Можно использовать батарею на 5v и не напрягаться?

Можно и так. Только я никогда не встречал батареи на 5В.  Можно ссылку?

А еще можно от батареии на 4.5В запитать. Запускается нормально.

 

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

1 - да.

2 - да.

rinox
Offline
Зарегистрирован: 08.04.2019

Теперь всё ясно, спасибо всем большое!

 

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Что ж тебе ясно, родной?

Студенческое задание? Да?

rinox
Offline
Зарегистрирован: 08.04.2019

Школьная проектная работа, которую заставило делать министерство образования. Никто этому не рад, ведь эта работа отвлекает от подготовки к грядущим экзаменам. А так я действительно во всем разобрался.

sadman41
Offline
Зарегистрирован: 19.10.2016

Охренеть. В школьной программе уже обязательные занятия с применением акселерометров начались?

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

rinox пишет:
Школьная проектная работа
Понятно, очередная ленивая задница, прогулявшая все занятия

andriano
andriano аватар
Онлайн
Зарегистрирован: 20.06.2015

sadman41 пишет:

Охренеть. В школьной программе уже обязательные занятия с применением акселерометров начались?

Акселерация, однако!

ua6em
ua6em аватар
Онлайн
Зарегистрирован: 17.08.2016

andriano пишет:

sadman41 пишет:

Охренеть. В школьной программе уже обязательные занятия с применением акселерометров начались?

Акселерация, однако!

что там какой-то акселерометр, коли процессора для нейросетей уже проектируют )))