#include <OneWire.h> | |
OneWire ds(2); | |
void setup(void) { | |
Serial.begin(9600); | |
} | |
void loop(void) { | |
byte i; | |
byte present = 0; | |
byte type_s; | |
byte data[12]; | |
byte addr[8]; | |
float celsius, fahrenheit; | |
if ( !ds.search(addr)) { | |
Serial.println("No more addresses."); | |
Serial.println(); | |
ds.reset_search(); | |
delay(250); | |
return; | |
} | |
Serial.print("ROM ="); | |
for( i = 0; i < 8; i++) { | |
Serial.write(' '); | |
Serial.print(addr[i], HEX); | |
} | |
if (OneWire::crc8(addr, 7) != addr[7]) { | |
Serial.println("CRC is not valid!"); | |
return; | |
} | |
Serial.println(); | |
// первый байт определяет чип | |
switch (addr[0]) { | |
case 0x10: | |
Serial.println(" Chip = DS18S20"); | |
type_s = 1; | |
break; | |
case 0x28: | |
Serial.println(" Chip = DS18B20"); | |
type_s = 0; | |
break; | |
case 0x22: | |
Serial.println(" Chip = DS1822"); | |
type_s = 0; | |
break; | |
default: | |
Serial.println("Device is not a DS18x20 family device."); | |
return; | |
} | |
ds.reset(); | |
ds.select(addr); | |
ds.write(0x44); | |
delay(1000); | |
present = ds.reset(); | |
ds.select(addr); | |
ds.write(0xBE); | |
Serial.print(" Data = "); | |
Serial.print(present, HEX); | |
Serial.print(" "); | |
for ( i = 0; i < 9; i++) { | |
data[i] = ds.read(); | |
Serial.print(data[i], HEX); | |
Serial.print(" "); | |
} | |
Serial.print(" CRC="); | |
Serial.print(OneWire::crc8(data, 8), HEX); | |
Serial.println(); | |
int16_t raw = (data[1] << 8) | data[0]; | |
if (type_s) { | |
raw = raw << 3; | |
if (data[7] == 0x10) { | |
raw = (raw & 0xFFF0) + 12 - data[6]; | |
} | |
} else { | |
byte cfg = (data[4] & 0x60); | |
if (cfg == 0x00) raw = raw & ~7; // разрешение 9 бит, 93.75 мс | |
else if (cfg == 0x20) raw = raw & ~3; // разрешение 10 бит, 187.5 мс | |
else if (cfg == 0x40) raw = raw & ~1; // разрешение 11 бит, 375 мс | |
} | |
celsius = (float)raw / 16.0; | |
fahrenheit = celsius * 1.8 + 32.0; | |
Serial.print(" Temperature = "); | |
Serial.print(celsius); | |
Serial.print(" Celsius, "); | |
Serial.print(fahrenheit); | |
Serial.println(" Fahrenheit"); | |
} |
I apologize if there are errors in the text. I'm not good at English.
#include "I2Cdev.h" | |
#include "MPU6050.h" | |
#define TO_DEG 57.29577951308232087679815481410517033f | |
#define T_OUT 20 | |
MPU6050 accel; | |
float angle_ax; | |
long int t_next; | |
float clamp(float v, float minv, float maxv){ | |
if( v>maxv ) | |
return maxv; | |
else if( v<minv ) | |
return minv; | |
return v; | |
} | |
void setup() { | |
Serial.begin(9600); | |
accel.initialize(); | |
Serial.println(accel.testConnection() ? "MPU6050 connection successful" : "MPU6050 connection failed"); | |
} | |
void loop() { | |
long int t = millis(); | |
if( t_next < t ){ | |
int16_t ax_raw, ay_raw, az_raw, gx_raw, gy_raw, gz_raw; | |
float ay,gx; | |
t_next = t + T_OUT; | |
accel.getMotion6(&ax_raw, &ay_raw, &az_raw, &gx_raw, &gy_raw, &gz_raw); | |
ay = ay_raw / 4096.0; | |
ay = clamp(ay, -1.0, 1.0); | |
if( ay >= 0){ | |
angle_ax = 90 - TO_DEG*acos(ay); | |
} else { | |
angle_ax = TO_DEG*acos(-ay) - 90; | |
} | |
Serial.println(angle_ax); // вывод в порт угла поворота вокруг оси X | |
} | |
} |
int trig = 3; | |
int echo = 4; | |
int buzz = 11; | |
int led = 2; | |
void setup() { | |
pinMode(trig, OUTPUT); | |
pinMode(echo, INPUT); | |
pinMode(buzz, OUTPUT); | |
Serial.begin(9600); | |
pinMode(led, OUTPUT); | |
} | |
void loop() { | |
digitalWrite(trig, LOW); | |
delayMicroseconds(1); | |
digitalWrite(trig, HIGH); | |
delayMicroseconds(10); | |
digitalWrite(trig, LOW); | |
int t = pulseIn(echo, HIGH); | |
double s = abs(t * 0.017); | |
Serial.println(s); | |
delay(100); | |
if (s > 90 ){ | |
tone(buzz, 900); | |
digitalWrite(led, HIGH); | |
delay(10); | |
} | |
else { | |
digitalWrite(led,LOW); | |
noTone(buzz); | |
delay(10); | |
} | |
} |
#include <TinyGPS++.h> | |
#include <SoftwareSerial.h> | |
TinyGPSPlus gps; | |
#define S_RX 4 // Вывод RX | |
#define S_TX 3 // Вывод TX | |
SoftwareSerial SoftSerial(S_RX, S_TX); | |
void setup(void) { | |
Serial.begin(9600); | |
SoftSerial.begin(9600); | |
} | |
void loop() { | |
while (SoftSerial.available() > 0) { | |
if (gps.encode(SoftSerial.read())) { | |
if (gps.location.isValid()) { | |
Serial.print("Latitude = "); | |
Serial.println(gps.location.lat(), 6); | |
Serial.print("Longitude = "); | |
Serial.println(gps.location.lng(), 6); | |
} | |
else | |
Serial.println("Location Invalid"); | |
if (gps.altitude.isValid()) { | |
Serial.print("Altitude = "); | |
Serial.print(gps.altitude.meters()); | |
Serial.println(" meters"); | |
} | |
else | |
Serial.println("Altitude Invalid"); | |
if (gps.speed.isValid()) { | |
Serial.print("Speed = "); | |
Serial.print(gps.speed.kmph()); | |
Serial.println(" kmph"); | |
} | |
else | |
Serial.println("Speed Invalid"); | |
if (gps.time.isValid()) { | |
Serial.print("Time (GMT) : "); | |
if(gps.time.hour() < 10) Serial.print("0"); | |
Serial.print(gps.time.hour()); | |
Serial.print(":"); | |
if(gps.time.minute() < 10) Serial.print("0"); | |
Serial.print(gps.time.minute()); | |
Serial.print(":"); | |
if(gps.time.second() < 10) Serial.print("0"); | |
Serial.println(gps.time.second()); | |
} | |
else | |
Serial.println("Time Invalid"); | |
if (gps.date.isValid()) { | |
Serial.print("Date : "); | |
if(gps.date.day() < 10) Serial.print("0"); | |
Serial.print(gps.date.day()); | |
Serial.print("/"); | |
if(gps.date.month() < 10) Serial.print("0"); | |
Serial.print(gps.date.month()); | |
Serial.print("/"); | |
Serial.println(gps.date.year()); | |
} | |
else | |
Serial.println("Date Invalid"); | |
if (gps.satellites.isValid()) { | |
Serial.print("Satellites = "); | |
Serial.println(gps.satellites.value()); | |
} | |
else | |
Serial.println("Satellites Invalid"); | |
} | |
} | |
} |
Всем здравствуйте мы команда Space team. Сегодня 19-го октября мы стали победителями своего региона. Поздравьте нас с победой)