Я использую акселерометр, который использует последовательную связь на Arduino (UART), я хочу передать данные на модуль Bluetooth (blusmirf gold) с помощью I2C и, наконец, прочитать его из моего приложения для Android.
Я могу определить правильные показания акселерометра, я также могу передавать данные через Bluetooth. Однако, когда я соединяю эти две вещи вместе, они передаются только один раз и после этого перестают передавать что-либо.
Кто-нибудь может помочь мне с этим? Заранее спасибо!
/* Аппаратное подключение: Arduino --------------- MMA8452Q Прорыв 3,3 В --------------- 3,3 В ЗАЗЕМЛЕНИЕ --------------- ЗАЗЕМЛЕНИЕ СДА (А4) --/330 Ом/-- СДА SCL (A5) --\/330 Ом\/-- SCL */ #include <Wire.h> // Должна быть включена библиотека Wire для I2C #include <SFE_MMA8452Q.h> // Включает библиотеку SFE_MMA8452Q #include <Событие.h> #include <Таймер.h> #include<stdlib.h> #include <SoftwareSerial.h> инт bluetoothTx = 16; // контакт TX-O сопряжения bluetooth, Arduino A2,16 инт bluetoothRx = 17; // Контакт RX-I сопряжения bluetooth, Arduino A3,17 ускорение MMA8452Q; Программное обеспечение Serial bluetooth (bluetoothTx, bluetoothRx); // для связи между ATMEGA 328 и BlueSMiRF Gold интервал Start_But =4; интервал LED_init =7; интервал LED_start =8; интервал х[20]; интервал у[20]; целая сумма=0; целая сумма1=0; число с плавающей запятой начало_значение1; число с плавающей запятой начало_значение2; тип int; интервал start_ref1; интервал start_ref2; плавающая начальная_точка ; плавающая сила_сумма; число с плавающей запятой force_value1 ; плавающая сила_значение2; плавающее значение_напряжения ; символьное значение[10]; значение символа2[10]; // считываем показания датчика, преобразуем их в значение силы и передаем пустая установка () { задержка(300); Серийный номер .begin(9600); // Запуск последовательного монитора на скорости 57600 бит/с Серийный .println("лалалалалалалалааааааааааааааааааа"); // bluetooth.println("Тестовый код MMA8452Q!"); задержка(200); Провод.начать(); задержка(100); Серийный номер .println("лалалалалалаласссссссс"); ускорение.инит(); Серийный .println ("лалалал"); // задержка (2000); bluetooth.начать (9600); // Bluetooth Mate по умолчанию использует скорость 115200 бит/с pinMode(Start_But,INPUT); pinMode (LED_start, ВЫХОД); pinMode (LED_init, ВЫХОД); цифровая запись (LED_init, 1); цифровая запись (LED_start, 0); AnalogReference(INTERNAL);//устанавливаем опорное значение аналогового выхода на 3,3 В вместо 5 В, так как выходное напряжение от датчиков мало //Снятие нескольких показаний без нагрузки, чтобы решить, какому соотношению между напряжением и усилием следует датчик х [0] = аналоговое чтение (1); задержка(100); х [1] = аналоговое чтение (1); задержка(100); сумма+=х[1]; х[2]=аналоговое чтение(1); задержка(100); сумма+=х[2]; х[3]=аналоговое чтение(1); задержка(100); сумма+=х[3]; х[4]=аналоговое чтение(1); задержка(100); сумма+=х[4]; х[5]=аналоговое чтение(1); задержка(100); сумма+=х[5]; х[6]=аналоговое чтение(1); задержка(100); сумма+=х[6]; х[7]=аналоговое чтение(1); задержка(100); сумма+=х[7]; х[8]=аналоговое чтение(1); задержка(100); сумма+=х[8]; х[9]=аналоговое чтение(1); задержка(100); сумма+=х[9]; х[10]=аналоговое чтение(1); задержка(100); сумма+=х[10]; begin_val1=сумма/10; у [0] = аналоговое чтение (0); задержка(100); у [1] = аналоговое чтение (0); задержка(100); сумма1+=у[1]; у [2] = аналоговое чтение (0); задержка(100); сумма1+=у[2]; у [3] = аналоговое чтение (0); задержка(100); сумма1+=х[3]; у [4] = аналоговое чтение (0); задержка(100); сумма1+=х[4]; у [5] = аналоговое чтение (0); задержка(100); сумма1+=х[5]; y[6]=аналоговое чтение(0); задержка(100); сумма1+=х[6]; у [7] = аналоговое чтение (0); задержка(100); сумма1+=х[7]; у [8] = аналоговое чтение (0); задержка(100); сумма1+=х[8]; у [9] = аналоговое чтение (0); задержка(100); сумма1+=х[9]; у [10] = аналоговое чтение (0); задержка(100); сумма1+=х[10]; begin_val2=сумма1/10; цифровая запись (LED_init, 0); цифровая запись (LED_start, 1); Серийный .println("лалалалалалал"); } пустая петля () { пока(1) { Серийный .println ("oi"); ускорение.чтение(); Серийный .println ("аа"); // int xAcceleration = accel.cx*100; int yAcceleration = ускорение.cy*100; общее количество =xAcceleration+yAcceleration; Серийный .print("ACC"); Серийный .println (всего); //Bluetooth.print("ACCB"); //Bluetooth.println(всего); // задержка (15); int start_ref1 = (аналоговое чтение (1)); int start_ref2 = (аналоговое чтение (0)); force_value1=(start_ref1-begin_val1)/25; если(force_value1<=0) { сила_значение1=0,0; } если (force_value1>=25) { сила_значение1=сила_значение1*0,8; } force_value2=(start_ref2-begin_val2)/5; если (force_value2<=0) { сила_значение2=0,0; } если(force_value2>=25) { сила_значение2=сила_значение2*0,8; } force_sum=(force_value1+force_value2)*0,8; dtostrf(force_sum,3,2,значение); Строка ул(значение); стр = "N" + стр; задержка(20); //Серийный.принт("сила"); //Serial.println(str); bluetooth.print("FORCEB"); bluetooth.println (ул); задержка(500); } }
Похоже у вас ошибка в прошивке (программе). Я имею в виду, что вы запускаете «Отправить что угодно в модуль Bluetooth» один раз, а затем не снова.
В вашей программе это должно выглядеть примерно так:
while(1) // Forever and ever since 1 won't change.
{
Read whatever from accelorometer();
return xy;
Transmit to bluetooth(xy);
}
геометрический
Рикардо
Базинга Ву