Conexion arduino Uno con otro Arduino Uno

Hola soy nuevo utilizando arduino actualmente curso la preparatoria o Colegio en el Pais de Panamá. Mi pregunta como dice el titulo es si ¿se puede logra una conexion de arduino y otra como esclava mediante el IDE oficial de arduino? ¿existe algun codigo? :) ojala me puedan ayudar. Solo se que con snap 4 arduino se puede lograr pero yo quiero conocer si con el IDE principal de Arduino se puede. Gracias

Puedes comunicar un arduino con otro via puerto Serie.
Como el UNO dispone de un solo puerto Serie en los pines 0 y 1 (RX-TX) si quieres ver que estan comunicándose debes usar algo que crea un puerto Serie Virtual, y se llama SoftwareSerial.
Esta libreria crea en dos pines de tu elección, generalmente del 2 al 13 un puerto Serie que llamas como quieres.
Busca en google o arriba derecha : SoftwareSerial y veras ejemplos.

Supongamos que eligues 7 (RX) y 8 (TX) entonces comunicarias un arduino con el otro de este modo

A1 Arduino 1
A2 Arduino 2

7 A1 con 1 de A2 (pin 7 de Arduino 1 con pin 1 de Arduino 2 esclavo
8 A1 con 0 de A2 (pin 8 de Arduino 1 con pin 0 de Arduino 2 esclavo)

Y no olvides unir GND de A1 con GND de A2

En A1 usarás el monitor Serie que esta en 0 y 1 y por eso no puedes usarlo y si usarás 7 y 8 de ese Arduino.

Algo básico sería asi en el Arduino 1

#include <SoftwareSerial.h>

SoftwareSerial mySerial(7, 8); // RX, TX

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);   // coloca la velocidad que gustes. Son los BAUDIOS de tu monitor serie
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }


  Serial.println("Goodnight moon!");

  // set the data rate for the SoftwareSerial port
  mySerial.begin(115200);   // esta velocidad debe coincidir con el otro arduino
  mySerial.println("Hello, world?");
}

void loop() { // run over and over
  if (mySerial.available()) {
    Serial.write(mySerial.read());   // solo imprime lo recibido por A2
  }
  if (Serial.available()) {
    mySerial.write(Serial.read());  // enviado a A2
  }
}

En Arduino 2 no tienes que usar SoftwareSerial porque no estaras monitoreando.

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }

  Serial.println("A2 funcionando");
}

void loop() { // run over and over

   int contador = 0;
   
   delay(1000);  // uso delay porque no interesa demorar el código
   Serial.print(contador++); // envio el dato de contador al Arduino 1

}