Recent Posts

Pages: [1] 2 3 ... 10
1
Deutsch / Re: Ambitionierter Arduino Ein...
Last post by omegaTM - Today at 08:34 pm
Erst einmal vielen Dank für Eure Antworten.

@gregorss:

Deine Website habe ich mir direkt einmal als Lesezeichen gesetzt.
Zum Thema Lötkolben/station, über Weller habe ich einiges gutes gelesen, wobei ich mich Frage ob es für den Anfang nicht ausreicht, wenn ich einen Standardlötkolben kaufe und je nach bedarf dann später etwas qualitativ hochwertigeres kaufe? Klar gilt "Wer billig kauft, der kauft zweimal", aber gerade für den Anfang wäre es vielleicht besser?

In der Uni gibt es auch einen Kurs zum Löten etc. ich denke dort könnte mir auch etwas über die Schulter geschaut werden, damit ich nicht komplett ins kalte Wasser falle.

@combie:

Die Videos dienen eher als Inspiration, wobei ich später(bei vorhandener Erfahrung), gerne auch mal was größeres realisieren möchte. Und je nachdem natürlich später auch etwas mit Kommilitonen zusammen.
Zum Thema zerlegen, ich hätte einige elektrische Geräte, die noch bei mir in der Ecke bzw. im Keller liegen. Sei es ein uralt(wirklich uralt) Stereoverstärker, Radiowecker, Xbox 360(mit Ring of Death), elektr. Rasierer, defekte Gamepads, Festplatten, Mainboards, Kartenlesegeräte usw...

@postmaster-ino: Wie du oben lesen kannst, habe ich ja schon ein Paar defekte oder auch alte elektrische Geräte, welche zig Bauteile beherbergen. Mir geht es eher darum, dass ich mir vielleicht einfach mal so grundlegendes Sortiment anschaffe, was man eigentlich ständig braucht. z.B mal ein Beutel LEDs, damit ich neben Wechselblinker, Lauflichtern, auch mal etwas anderes realisieren kann. Ideen habe ich aktuell massig, die mit einfachsten Bauteilen zu realisieren wären.. zumindest meiner Theorie nach  :D
2
Programming Questions / Re: Unstable Potantiometer
Last post by PieterP - Today at 08:33 pm
You connected the pots incorrectly. Disconnect them right now, they could be shorting out your power supply, burning the carbon traces.
3
General Electronics / Re: High resistivity wire
Last post by ReverseEMF - Today at 08:32 pm
Here's a crazy idea:



Monitor the scattered light from two lasers.  Use the intensity of light, as read by a photo sensor, to determine the position of the finger.  The sensor is behind a tube to limit ambient light influence.  The tube's diameter and depth would be adjusted to favor laser scattered light over ambient light.  Perhaps a third photo sensor could monitor ambient light and contribute corrections to the calculation.

Or the lasers could be modulated and the photo sensors would, when the laser is off, then be used to measure the ambient light, and this could be subtracted.
4
Portugues / Re: Comunicação entre dois eth...
Last post by progra - Today at 08:32 pm
Estou com um novo problema e não estou conseguindo encontrar onde que é o problema porque não tenho experiência com a parte de redes, talvez consigam me ajudar.

É o seguinte fiz a programação de um web cliente para se comunicar através de um post com um determinado endereço da internet e receber no retorno deste post uma mensagem de que a comunicação ocorreu.
Um amigo meu fez para mim uma aplicação que rodava na web que recebe um post e manda uma mensagem de confirmação para o arduino que recebeu este post. O problema é que meu arduino não está recebendo essa mensagem de confirmação com isso não estou sabendo se a comunicação está ocorrendo.

O estranho é que quando coloco esse web cliente para se comunicar com um web service (o que fiz com outro arduino e outro etherneth shield, que coloquei a programação nas mensagens anteriores) a comunicação ocorre perfeitamente, o web cliente enviava a mensagem para o web service ele processa a mensagem e manda de volta para o web client que printa este retorno na tela. Tudo isso na rede local.

Porém quando mudo para ele se comunicar com esse endereço na internet estou com esse problema que não recebo a mensagem de retorno, com isso não consigo identificar onde é o problema.


Como meu amigo infelizmente não permitiu que eu disponibilizasse o endereço da aplicação dele, alterei  o nome do endereço dele pela palavra google somente para que entenda a programação.
O código deste web cliente é o seguinte:
Code: [Select]

//Programação web client

int long contagem=0;// variavel longa que armazena a temporização.

//===============declaração e configuração ethernet==================
#include <SPI.h>
#include <Ethernet.h>
int i;

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xEF};
IPAddress ip( 192, 168, 0, 106);
IPAddress gateway ( 192, 168, 0, 1 ); //internet access via router
IPAddress subnet ( 255, 255, 255, 0 ); //subnet mask
String dataPOST = ""; //=recebido;

EthernetClient client;//função cliente implementada

//servidor com quem será realizada a troca de mensagem
char server[] = "https://www.google.com.br/sendData?";
//IPAddress server(192,168,0,105);
int serverPort = 80;//porta de comunicação padrão
const int updateInterval = 10000; // Time interval in milliseconds to update Th
// Variable Setup
long lastConnectionTime = 0;
boolean lastConnected = false;
int resetCounter = 0;

void setup() {
  
 Serial.begin(9600);
 //=============configuração ethernet==========================
   //tempo para inciar o módulo de ethernet
   //(seguraça em caso de precisar iniciar 2 aparelhos)
  delay(1000);
  //configuração de porta
  pinMode(4,OUTPUT);
  digitalWrite(4,HIGH);

  Ethernet.begin( mac, ip, gateway, subnet);
  //====================//////////////////////===================
}
  

void loop() {
        
//===============função para fazer o post na interface====================
          
          //dataPOST ="Testando/comunicacao/leituradosensor1=0128";// recebido;
  // If using a static IP, comment out the next line
           Ethernet.maintain();
  
  //POST

if (client.connect( server, serverPort)) {//conexão com o servidor!

//  HTTP POST REQUEST//
  client.print ("POST /");
  client.print (dataPOST);
  client.print (" /update HTTP/1.1\n");
  //client.print("Host: 192.168.0.105\n");
  client.print("Host: www.google.com.br/sendData?");
  client.print("User-Agent: Arduino/1.0\n");
  client.print("Content-Length: ");
  client.println(dataPOST.length());//data
  client.print("Connection: close\n");
  client.print("\n\n");

  Serial.println(dataPOST);


  EthernetClient client = client.available();
if (client)
{
boolean currentLineIsBlank = true;
String str;
while (client.connected())
{
    if (client.available())
    {
        char c = client.read();
        str.concat(c);
      unsigned long agora = millis(); //tempo agora.
      
     while (millis() - agora <= 10000) { // esperamos até um segundo
         if (client.available() >0){ // recebeste alguma coisa do servidor...
      
          break;
        }

       //   if ( c == '\n'){
       // if (c == '\n' && currentLineIsBlank)
        //{
            
            
                String b = str.substring(6,48);
                Serial.print(str);
                Serial.println(b);
                Serial.println("");

          break;
          }
        if (c == '\n')
        {
        currentLineIsBlank = true;
        }
        else if (c != '\r')
        {
        currentLineIsBlank = false;
        }
      }
}
    // give the web browser time to receive the data
    delay(10);
    // close the connection:
    client.stop();
  }

//  //==============implementação que faz a leitura do retorno do post =======
//           String conteudo2 = "";
//      char caractere2;
//    String str2;
//      //====estrututura de verificação se há algo para ler e temporização
//      unsigned long agora = millis(); //tempo agora.
//      while (millis() - agora <= 100000) { // esperamos até um segundo
//         if (client.available() >0){ // recebeste alguma coisa do servidor...
//      
//          break;
//        } // agora sim podes ler...
//     // Faz-me espécie apenas leres um caracter... mas tu saberás o que estás à procura.
//        caractere2 = client.read();
//    str2.concat(caractere2);
//    Serial.print("recebido:");
//    Serial.println(str2);
//    if (caractere2 != '\n'){
//      // Concatena valores
//      conteudo2.concat(caractere2);
//     // Serial.println(conteudo2);
//    }
//    }
//      //==============================================================
//
//    //}
//        conteudo2 = "";
////=====================//////////////////////=======================        

  }
  else {
    //Se a conexão não for realizada:
    Serial.println("connection failed");
    Serial.println("disconnecting.");
    client.stop();
  }        
          client.stop();
              
        }
        
5
General Electronics / Re: connect IR Sensor
Last post by Paul_KD7HB - Today at 08:31 pm
No answer, but a question. HOW do you know it's an IR sensor?

Paul
6
Deutsch / Mein UNO spinnt.
Last post by fridi - Today at 08:31 pm
Moin moin aus HU.
Ich beschäftige mich seit Kurzem mit der Arduino UNO Programmierung. Ich möchte damit einen Foto Scanner steuern. Bisher hat das auch gut geklappt. Nun möchte ich ein Poti einbinden, um die Bilderzahl pro Umdrehung einzustellen.
Ich habe auf dem UNO ein CNC Shield und steuere damit 4 Stepper Nema 17 und den Fotoapparat. Tasten für Hoch, Runter, Kippen  sowie Relaissteuerung für den Auslöser, Umkehrtaste und Starttaste für den Scann  mit Drehteller sind da auch dran.  Nun habe ich das Problem, das die FOR Schleife für den Drehteller nicht funktioniert.. Die Schleife fängt bei 13 an und spring auch in unregelmäßigen Abständen nach oben. Das Programm sieht momentan etwas zerfleddert aus, weil ich versucht habe, den Fehler ein zu grenzen. Vielleicht hat ja jemand einen Tip für mich. Der Drehteller mach eine Umdrehung bei 6400 Steps.
Hier das Programm:

#define Poti 0
// --------------------PIN Benennung----------------------------------
int Kamera=10;                  // Kameraauslöser Servosteuerung alt Y Endstop
//int Servo2=11;                // frei                        alt Z endstop
int StepStpHoch=4;              // step Hoch                    alt step z
int StepStpDreh=3;              // Step Drehen  Dreehteller     alt step y
int StepStpKipp=2;              // Step  Kippen                 alt step x 
int StepDirHoch=7;              // Die Hoch  Hoch               alt z Dir
int StepDirDreh=6;              // Drehteller                   alt y DIR
int StepDirKipp=5;              // Kippen                       alt x Dir
int StepAllEna=8;               // alle Stepper einschalten
int EndstopHoch=9;              // Endstop x Achse              alt Endstop X
int Start=0;                    // schwarz                       alt RX min
int TastePlusMinus=1;           // Gelb   Plus Minus             alt TX Endstop
int TasteHochtief=12;           // grün   Hoch/tief             alt enable spin
int TasteKippen=13;             // braun  Kippen                alt spin dir
//----------------------------Variablen----------------------------------
int Dauer=6400;                 //6443 Umdrehungen Teller hier 2 x 360°  12886
int Tempo=10;                    // Umdrehungsgeschwindigkeit
int Hub=1;                      //Hubgeschwindigkeit
int Kipp=3;                     //Kippgeschwindigkeit
int Klick=0;
int Servopause=1500;             //Zeit für die Einstellung des Servos auf Klick
int Klickmenge=200;             // Fotos pro Umdrehung  Wert 200 ca 30 Fotos
int Speicherpause=3500;         //Die Zeit. die ein Foto digital abgespeichert wird
int Bilder=0;


void setup()                           
{
 Serial.begin(9600);
 pinMode(Poti,INPUT);             
 //--------------------Ausgabe/ Lesen/Schreiben--------------------------
  // Pin Funktion einstellen
  pinMode(Kamera, OUTPUT);        // rRXals digital für Kamerasteuerung
  pinMode(1, OUTPUT);             //TX als digital-   für Kamerasteuerung 
  pinMode(StepAllEna, OUTPUT);
  pinMode(StepDirHoch, OUTPUT);
  pinMode(StepStpHoch, OUTPUT);
  pinMode(StepDirDreh, OUTPUT);
  pinMode(StepStpDreh, OUTPUT); 
  pinMode(StepDirKipp, OUTPUT); 
  pinMode(StepStpKipp, OUTPUT);
  pinMode(EndstopHoch,INPUT);      // Endstop für Spindel unten  alt X Endstop   
  pinMode(Start,INPUT);            // Start Knopf      alt Y Endstop
  pinMode(TastePlusMinus,INPUT);   // Plus Minus      alt Z endstop
  pinMode(TasteHochtief,INPUT);    // Hoch/tief       alt enable spin
  pinMode(TasteKippen,INPUT);      // Kippen          alt spin dir

  // Pullup Widerstände für die Tasten einschalten
  pinMode(EndstopHoch, INPUT_PULLUP);       //9 Pullup ein
  pinMode(Start, INPUT_PULLUP);             //10 Pullup ein
  pinMode(TastePlusMinus, INPUT_PULLUP);    //11 Pullup ein
  pinMode(TasteHochtief,INPUT_PULLUP);      //12 Pullup ein
  pinMode(TasteKippen, INPUT_PULLUP);       //13 Pullup ein 
  digitalWrite(StepAllEna,HIGH);            // set Ena aus

}
//---------------------------------Programmablauf----------------------
void loop(){
  int schleifer = analogRead(Poti);
  Serial.print("Schleiferposition: ");
  Serial.println(schleifer)  ;
  if(schleifer < 10)
  {
  schleifer=10;
  }
  Klickmenge=Dauer/schleifer;
 
  digitalWrite(StepAllEna,LOW);                // Motoren an
 if (digitalRead(Start)==LOW)           //Unterprogramm Teller drehen
 {
      Drehen();

if (digitalRead(TasteHochtief)==LOW){   //Unterprogramm Hoch/Tief fahren
      Heben();
}
if (digitalRead(TasteKippen)==LOW){     //Unterprogramm Kamera kippen
      Kippen();
}
}   



//-------------------------Unterprogramme-----------------------------
void Drehen()
{
  Klick=0;

for (int Durchlauf=0; Durchlauf<Dauer;Durchlauf++)               //Zeitschleife für eine Umdrehung
 {
// Abbruch einleiten--------------------------------------------------
      if(digitalRead(TastePlusMinus)==LOW)   //Start zum Abbruch gedrückt
      {
//      int Durchlauf=(Dauer);                         // i auf Endwert setzen.
      continue;                              // Schleife verlassen
// Abbruch einleiten--------------------------------------------------
      }
  Serial.print("Klicks: ");
  Serial.println(Klick);
  Serial.print("Durchlauf: ");
  Serial.println(Durchlauf);
  delay(500);
 
 //Kamera starten------------------------------------------------------------
//  if(Klick > Klickmenge)             // Zeitpunkt für Klick
 // {
//   Klick=0;                          // Klickzeit neu szarten
//   digitalWrite(Kamera,HIGH);       // Kamera an
//   delay(Servopause);               // Zeit bis Servo drausen ist//
//   digitalWrite(Kamera,LOW);        // Kamera aus
//   delay(Speicherpause);

//   }
//Kamera Starten  -------------------------------------------------------------     
// Motor drehen-------------------------------------------
    digitalWrite(StepStpDreh,HIGH);     //Takt High
    delay(10);                       //Verzögerung
    digitalWrite(StepStpDreh,LOW);      //Takt low
    delay(10);
// Motor drehen-------------------------------------------

   Klick=Klick+1;                  // Zeitpunkt für Klick raufrechnen
   }
}
 //---------------------------heben/Senken---------------------------
    void  Heben()
 {
//digitalWrite(StepAllEna,LOW);                // Motoren an

     do   
    {
      if(digitalRead(TastePlusMinus)==LOW)   //Plus/ MinusTaste gedrückt
      {
      digitalWrite(StepDirHoch, LOW);        //Nach oben drehen
      } else
      {
      digitalWrite(StepDirHoch, HIGH);       //Wenn Plus/Minus nicht gedrückt,
                                             // nach unten drehen
      }
    if (digitalRead(EndstopHoch)==HIGH)       //Wenn Endstop ausgelöst
    {
     digitalWrite(StepDirHoch, LOW);          //Dann nach oben drehen
    }
    digitalWrite(StepStpHoch,HIGH);           //Takt High
    digitalWrite(StepStpHoch,LOW);            //Takt low
    }
    while (digitalRead(TasteHochtief)==LOW);  // Ausführen, so lange
                                              // Wie  Taste HT gedrückt ist

 //digitalWrite(StepAllEna,HIGH);               // Motoren aus 

 }
 //-----------------------Kippen--------------------------
 void Kippen(){
//digitalWrite(StepAllEna,LOW);               // Motoren an
   do
   {
      if (digitalRead(TastePlusMinus)==LOW) // Wenn Plus/Minus gedrückt
      {
      digitalWrite(StepDirKipp, HIGH);      //Kippen nach Plus drehen
      }
      else
      {
      digitalWrite(StepDirKipp, LOW);       //Sonst nach Minus drehen
      }
    digitalWrite(StepStpKipp,HIGH);         //Takt High
    delay(Kipp);                            //Verzögerung
    digitalWrite(StepStpKipp,LOW);          //Takt LOW
    delay(Kipp);                            //Verzögerung
    }
   while (digitalRead(TasteKippen)==LOW);   //Solange Taste Kippen gedrückt ist
//digitalWrite(StepAllEna,HIGH);              // Motoren aus
 
}
7
Deutsch / Re: Projekt: IOT Sound Sensor ...
Last post by gregorss - Today at 08:30 pm
Ich wäre auch sehr dankbar für Feedback.
Gewöhnungsbedürftig. Auf die Schnelle: Zu viel Klickerei, zumindest mir leuchtet der Aufbau nicht sofort ein.

Gruß

Gregor
8
Project Guidance / Re: Optimzing Code and pushbut...
Last post by PieterP - Today at 08:30 pm
I guess I want to know if those delays will effect other code written in the loop, does the program actually pause there for the amount of time specified or does it just continue reading the program but effect that specific command by the amount of delay?
They definitely will. Delay just blocks the entire processor, it can't do anything during that time, it just waits. That's why the code I posted uses millis for timing, rather than delay.

I am building a midi application
In that case: take a look at my Control Surface library, it probably does what you need. (I didn't finish all the documentation yet, but the examples and the code works.)
Here's an example with LEDs and buttons: Ex.14.LED.ino
9
I found a motor with an encoder built in, I guess I'll probably use these

https://www.robotshop.com/en/cytron-12v-60rpm-93oz-gear-motor-encoder.html

10
Generale / Re: realizzazione di un ascens...
Last post by simonsdec - Today at 08:29 pm
Scusami ma non ho capito che hai fatto potresti spiegarmelo cortesemente con dei commenti ? Scusa e grazie
Pages: [1] 2 3 ... 10