Arduino starter kit, samt ett bygge på kopplingsdäck, temperatur och klocka.

Trädvy Permalänk
Medlem
Registrerad
Apr 2007

Arduino starter kit, samt ett bygge på kopplingsdäck, temperatur och klocka.

Godkväll fick för mig att köpa Arduino starter kit för att leka med elekronik och programmering.

Väldigt kul, start kittet helt okey men beroende på vem som frågar skulle jag
hellre rekommendera följa de tutorials som finns på nätet, finns hur mycket som helst och köpa delar separat.
Billgare på det sättet.

Boken i start kittet är svårläst konstig färg och teckensnitt, samt förenklade förklaringar.
Vidare 10 kohm trimpotten som följer med är inte duglig på kopplingsdäck den fjädrar gärna ur och glappar,
finns bättre varianter.

Vidare tyker jag inte om arduino ide, men men jag installerade atmel studio samt visual micro
och använder det istället, var lite krångligt få det fungera, verkar som bägge måste installeras
på C: , för att 2 programmen ska hitta varandra, är vad jag fick bäst resultat av att göra.
Går säkert med djupare kunskaper om dem att ha på andra ställen.

Nu till min fråga, går koden nedan förbättra snygga till bortsett från de kommentarer som inte ser ut att höra hemma ?
Jag har inte någon som helst utbildning i något programmerings språk eller kunskap, är självlärd.

/*
* temperature and clock sent to lcd display 16x2
* celsius with 2 decimals and time in format hh:mm:ss and day of week
*
* lcdtemperature.ino,
* code from Adafruit, page https://learn.adafruit.com/adafruit-arduino-lesson-12-lcd-dis...
*
* Adafruit Arduino - Lesson 12. Light and Temperature
*
* RTC clock code from http://tronixstuff.com/2014/12/01/tutorial-using-ds1307-and-d...
*
* Created: 8/5/2015 5:25:28 PM
* Author: Eos
*/

#include <LiquidCrystal.h>
#include "Wire.h"
#define DS3231_I2C_ADDRESS 0x68

int tempPin = 0;

// float highestTemp;
// float lowestTemp = 0.0;
//float highestLowestTemp;

// Convert normal decimal numbers to binary coded decimal
byte decToBcd(byte val)
{
return( (val/10*16) + (val%10) );
}

// Convert binary coded decimal to normal decimal numbers
byte bcdToDec(byte val)
{
return( (val/16*10) + (val%16) );
}

// BS E D4 D5 D6 D7
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

void setup()
{
lcd.begin(16, 2);
// Serial.begin(9600);
Wire.begin();
// set the initial time here:
// DS3231 seconds, minutes, hours, day, date, month, year
// setDS3231time(00,44,21,6,14,8,15);
}

void setDS3231time(byte second, byte minute, byte hour, byte dayOfWeek, byte
dayOfMonth, byte month, byte year)
{
// sets time and date data to DS3231
Wire.beginTransmission(DS3231_I2C_ADDRESS);
Wire.write(0); // set next input to start at the seconds register
Wire.write(decToBcd(second)); // set seconds
Wire.write(decToBcd(minute)); // set minutes
Wire.write(decToBcd(hour)); // set hours
Wire.write(decToBcd(dayOfWeek)); // set day of week (1=Sunday, 7=Saturday)
Wire.write(decToBcd(dayOfMonth)); // set date (1 to 31)
Wire.write(decToBcd(month)); // set month
Wire.write(decToBcd(year)); // set year (0 to 99)
Wire.endTransmission();
}

void readDS3231time(byte *second,
byte *minute,
byte *hour,
byte *dayOfWeek,
byte *dayOfMonth,
byte *month,
byte *year)
{
Wire.beginTransmission(DS3231_I2C_ADDRESS);
Wire.write(0); // set DS3231 register pointer to 00h
Wire.endTransmission();
Wire.requestFrom(DS3231_I2C_ADDRESS, 7);
// request seven bytes of data from DS3231 starting from register 00h
*second = bcdToDec(Wire.read() & 0x7f);
*minute = bcdToDec(Wire.read());
*hour = bcdToDec(Wire.read() & 0x3f);
*dayOfWeek = bcdToDec(Wire.read());
*dayOfMonth = bcdToDec(Wire.read());
*month = bcdToDec(Wire.read());
*year = bcdToDec(Wire.read());
}

void displayTime()
{
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
// retrieve data from DS3231
readDS3231time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month,
&year);
// send it to the lcd display 16x2
lcd.print(hour, DEC);
// convert the byte variable to a decimal number when displayed
lcd.print(":");
if (minute<10)
{
lcd.print("0");
}
lcd.print(minute, DEC);
lcd.print(":");
if (second<10)
{
lcd.print("0");
}
lcd.print(second, DEC);
/*
Serial.print(" ");
Serial.print(dayOfMonth, DEC);
Serial.print("/");
Serial.print(month, DEC);
Serial.print("/");
Serial.print(year, DEC);
Serial.print(" Day of week: ");
*/
switch(dayOfWeek){
case 1:
lcd.print(" Sunday");
break;
case 2:
lcd.print(" Monday");
break;
case 3:
lcd.print(" Tuesday");
break;
case 4:
lcd.print(" Wednday");
break;
case 5:
lcd.print(" Thurday");
break;
case 6:
lcd.print(" Friday");
break;
case 7:
lcd.print(" Saturday");
break;
}
}

void loop()
{
// Display Temperature in C
// Serial.println(lowestTemp);
int tempReading = analogRead(tempPin);
float tempVolts = (tempReading / 1024.0) * 5.0;
float tempC = (tempVolts - .5) * 100; // Celsius
float celsius = tempC;
//float tempF = tempC * 9.0 / 5.0 + 32.0; Fahrenheit

// Save highest and lowest temperature
/*highestLowestTemp = celsius;
if(lowestTemp < 1.0) {
lowestTemp = highestLowestTemp;
}
if(highestTemp < highestLowestTemp) {
highestTemp = highestLowestTemp;
}
if(lowestTemp > highestLowestTemp) {
lowestTemp = highestLowestTemp;
}
*/
// print to lcd 16x2
lcd.setCursor(0, 0);
lcd.print("T:");
lcd.setCursor(2, 0);
lcd.print(String(celsius, 2));
lcd.print(" Celsius");
lcd.setCursor(0, 1);
/*
lcd.print("H:");
lcd.setCursor(2, 1);
lcd.print(String(highestTemp, 2));
lcd.print(" L:");
lcd.print(String(lowestTemp, 2));
delay(500);
*/

displayTime(); // display the real-time clock data on the lcd display 16x2,
delay(1000); // every second
lcd.clear();
}

Dold text

Hur det ser ut, ber om ursäkt för dålig bild :

Spelar http://wurmonline.com/, Broar är live, skepp fått nytt utseende. 21:a oktober steam Wurm Unlimited

Sammanfattning i trådstart