Нужна помощь в программировании.
- Войдите на сайт для отправки комментариев
Пнд, 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 - да.
Теперь всё ясно, спасибо всем большое!
Что ж тебе ясно, родной?
Студенческое задание? Да?
Школьная проектная работа, которую заставило делать министерство образования. Никто этому не рад, ведь эта работа отвлекает от подготовки к грядущим экзаменам. А так я действительно во всем разобрался.
Охренеть. В школьной программе уже обязательные занятия с применением акселерометров начались?
Охренеть. В школьной программе уже обязательные занятия с применением акселерометров начались?
Охренеть. В школьной программе уже обязательные занятия с применением акселерометров начались?
что там какой-то акселерометр, коли процессора для нейросетей уже проектируют )))