Нужна помощь в программировании.
- Войдите на сайт для отправки комментариев
Пнд, 08/04/2019 - 20:23
Помогите разобраться в данном скетче, т.к. нужно срочно сделать прибор для считывания ускорения и последующем снятии данных с 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);
}
Также не знаю, как запустить программу отдельно от компьютера при питании от кроны.
Собственно весь вопрос в том, как начать запись показаний и как потом их снять.
Как работает - понятно. Когда на пине 8 высокий уровень включается светодиодик и каждые 0,2 секунды записываются показания. Когда на пине 8 низкий уровень выключается светодиодик и данные из EEPROM гонятся на серийный порт.
Начать запись - высоком уровене при пине 8 включить питание, считать при низком уровне с серийного порта. Как запитать от кроны? Наверное сделав из 9В 5В, например КРЕНкой.
Как запитать от кроны? Наверное сделав из 9В 5В, например КРЕНкой.
а в VIn сразу не проще ?
а в VIn сразу не проще ?
Просто с нано не имел дело, поэтому предположил отсутствие встроенной.
А вообще - зачем там нужна крона? Можно литиевый элемент использовать на 3,3В или я не прав?
а в VIn сразу не проще ?
Просто с нано не имел дело, поэтому предположил отсутствие встроенной.
А вообще - зачем там нужна крона? Можно литиевый элемент использовать на 3,3В или я не прав?
правы, тока нана от 3.3 не заработает, да и нана там не нужна. уж коль ракета, значит борьба за вес
про мини 168 на 3.3в и литий.
но, все сделано до нас и о какой помощи просит ТС непонятно.
Получается, при подаче высокого напряжения на 8 пин начинается считывание данных с акселерометра и записи в память, в при низком напряжении наоборот идёт считывание данных с платы?
К сожалению, что для вас ясно как пять пальцев, для меня не так просто.
Можно использовать батарею на 5v и не напрягаться?
Можно и так. Только я никогда не встречал батареи на 5В. Можно ссылку?
А еще можно от батареии на 4.5В запитать. Запускается нормально.
1 - да.
2 - да.
Теперь всё ясно, спасибо всем большое!
Что ж тебе ясно, родной?
Студенческое задание? Да?
Школьная проектная работа, которую заставило делать министерство образования. Никто этому не рад, ведь эта работа отвлекает от подготовки к грядущим экзаменам. А так я действительно во всем разобрался.
Охренеть. В школьной программе уже обязательные занятия с применением акселерометров начались?
Охренеть. В школьной программе уже обязательные занятия с применением акселерометров начались?
Охренеть. В школьной программе уже обязательные занятия с применением акселерометров начались?
что там какой-то акселерометр, коли процессора для нейросетей уже проектируют )))